-
C# 7.0のローカル関数とは?特徴と使い方を実例付きで解説
C# 7.0で導入されたローカル関数(Local Functions)は、別のメンバーの中に入れ子状に定義できるプライベートなメソッドです。最大の特徴は、そのローカル関数を定義したメンバー(親となるメソッドなど)からしか呼び出せないという点にあります。これにより、特定のメソッド内でのみ使用する補助的な処理を、クラスの外部や他のメンバーから隠蔽しながら、すっきりと記述できます。ローカル関数を宣言・呼び出しできる場所ローカル関数は、以下のようなメンバーの中で宣言し、呼び出すことができます。メソッド(特にイテレーターメソッドや非同期(async)メソッド)コンストラクタープロパティのアクセサーイベン
-
C# 7.0のパターンマッチングとは?is式とswitch文の使い方を実例で解説
C# 7.0では、パターンマッチング(pattern matching)という新機能が導入されました。この機能は主に2つの場面、すなわちis式とswitchステートメントで利用できます。 パターンとは、ある値が特定の「形(shape)」を持っているかどうかを検査する仕組みです。値がパターンに一致した場合には、その値から情報を取り出すことも可能です。 パターンマッチングのメリット より簡潔な構文:アルゴリズムを短く読みやすいコードで記述できます。 任意のデータ型に対応:if/elseによる型判定ではプリミティブ型との比較が必要になる場面がありますが、パターンマッチングは独自に定義した型を含むあ
-
C# 7.0の新機能解説:バイナリリテラルと数字区切り文字(アンダースコア)の使い方
バイナリリテラルとは C# 7.0より前のバージョンでは、変数に代入できる数値リテラルは10進数と16進数のみでした。C# 7.0ではバイナリリテラルが新たに導入され、2進数の値を直接変数に代入できるようになりました。 バイナリリテラルを使用するには、数値の先頭に「0b」という接頭辞を付けるだけです。ビットフラグの管理やビット演算を含むコードでは、2進数で記述した方が意図が伝わりやすく、可読性が大きく向上します。 数字区切り文字(Digit Separator)とは 数字区切り文字は、1つのアンダースコア(_)で表されます。この区切り文字は、任意の数値リテラルの中に自由に挿入でき、桁数の多い数
-
C# 7.0のrefローカル変数とref戻り値とは?基本の仕組みと実例をわかりやすく解説
C# 7.0で導入された「ref戻り値(ref return)」は、メソッドが値そのものではなく、変数への参照を返すことを可能にする機能です。呼び出し側では、返された変数を値として扱うことも、参照として扱うことも自由に選択できます。さらに、返された値への参照そのものを持つ新しい変数を作成することもでき、これを「refローカル変数(ref local)」と呼びます。通常の代入では元の配列は変更されないまず、通常の代入を行った場合の挙動を見てみましょう。以下の例では、color 変数の値を変更しても、元の colors 配列には一切影響しません。コード例class Program{ &n
-
C# 8.0のスイッチ式(switch式)とは?新構文の書き方を実例で解説
C# 8.0で導入されたスイッチ式(switch expression)は、式のコンテキスト内でswitchのような動作(セマンティクス)を実現できる新しい構文です。従来のswitchは選択ステートメントであり、マッチ式とのパターンマッチングの結果に基づいて、候補の中から実行する1つのswitchセクションを選びます。また、1つの式を3つ以上の条件で判定したい場合には、switchステートメントがif-else構文の代替としてよく使われてきました。スイッチ式を使うことで、このような処理をより簡潔に記述できます。スイッチ式の新しい書き方スイッチ式では、=>(アロー演算子)を使って各ケースの
-
C# 8.0のインデクサーと^演算子(末尾からのインデックス)の使い方
^ 演算子(末尾からのインデックス演算子)とはC# 8.0 で新しく導入された ^ 演算子 は、「index from end operator(末尾からのインデックス演算子)」とも呼ばれます。この演算子を使うと、シーケンスやコレクションの末尾を基準とした相対的なインデックスで要素にアクセスできます。たとえば list[^1] は最後の要素、list[^2] は最後から 2 番目の要素を意味します。従来のように Count - 1 や Length - 1 を手動で計算する必要がなく、末尾側の要素を取得・更新するための最も簡潔で直感的な記述方法です。基本的な使い方company.listEmp
-
C# 8.0の非同期ストリーム(Async Streams)とは?基本と使い方を解説
C# 8.0で導入された「非同期ストリーム(Async Streams)」は、ストリーミング形式のデータソースをモデル化するための機能です。データストリームでは、要素の取得や生成が非同期に行われるケースが多くあります。従来のC#では、yield returnを使用する反復子メソッドにasync修飾子を付けることはできませんでした。しかし、C# 8.0以降では、async修飾子を付けたメソッド内でもyield returnを使って要素を順次返せるようになりました。そして、生成した非同期ストリームを消費する側では、await foreachループを使用します。たとえば、以下のような従来のコードは…
-
C# ASP.NET Web APIを使うメリットとは?主な利点を徹底解説
ASP.NET Web APIとはASP.NET Web APIは、シンプルで軽量なサービスを構築する際に最適な選択肢です。XMLを含むあらゆるテキスト形式を扱うことができ、従来のWCF(Windows Communication Foundation)と比較して高速に動作する点が大きな特徴です。ASP.NET Web APIの主な利点標準的なHTTPメソッドによるCRUD操作:GET、POST、PUT、DELETEといった標準的なHTTP動詞を使用し、HTTPの仕組みに沿った自然な形ですべてのCRUD操作(作成・読み取り・更新・削除)を実装できます。ルーティングの完全なサポート:柔軟なURL
-
ASP.NET Web APIはweb.configファイルで構成できる?コードベース構成の正しい方法を解説
結論:Web APIはweb.configファイルでは構成できませんいいえ、ASP.NET Web APIはweb.configファイルでは構成できません。Web APIがサポートしているのはコードベースの構成(code-based configuration)であり、web.configファイルによる設定には対応していません。Web APIでは、ホスティングインフラストラクチャや各種コンポーネントの動作をカスタマイズするために、以下の項目をコード上で構成します。ルート(Routes)フォーマッター(Formatters)フィルター(Filters)依存関係リゾルバー(Dependency R
-
C# ASP.NET Web APIのパラメーターバインディングとは?基本の仕組みと[FromBody]・[FromUri]属性の使い方
バインディング(Binding)とは、Web APIがコントローラーのアクションメソッドを呼び出す際に、そのメソッドのパラメーターへ値を設定するプロセスのことです。この記事では、さまざまな型のパラメーターを持つWeb APIメソッドがどのように動作するのか、そしてバインディング処理をカスタマイズする方法について詳しく解説します。デフォルトのバインディング動作Web APIは、パラメーターの型に応じて自動的に値の取得元を判断します。単純型(Simple Type)の場合: int、bool、doubleなどのプリミティブ型のパラメーターに対しては、Web APIはURIから値を取得しようとします
-
ASP.NET Web API(C#)の組み込みメッセージハンドラーとは?仕組みと種類を解説
メッセージハンドラー(Message Handler)とは、HTTPリクエストを受け取り、HTTPレスポンスを返す役割を持つクラスのことです。すべてのメッセージハンドラーは、抽象クラス HttpMessageHandler から派生します。このハンドラーを利用することで、リクエストが HttpControllerDispatcher に到達する前に、その内容を処理・編集、あるいは拒否することができます。メッセージハンドラーは、リクエスト処理パイプラインのごく早い段階で実行されるため、Web APIにおける横断的関心事(クロスカッティングコンサーン)を実装するのに最適な場所です。メッセージハンド
-
C#で文字列から数値を検索・抽出する方法【Char.IsDigit()と正規表現の2つの手法】
C#で文字列の中に含まれる数値だけを取り出したい場面は、実務でもよくあります。例えば、ユーザー入力から数字部分のみを抜き出したり、ログファイルから数値データを抽出したりするケースです。本記事では、C#で文字列から数値を見つけて抽出する2つの代表的な方法を、サンプルコード付きでわかりやすく解説します。正規表現(Regex)とは正規表現とは、入力テキストに対してパターンマッチングを行うための仕組みです。.NETフレームワークには正規表現エンジンが組み込まれており、パターンに一致する文字列を簡単に検索・抽出できます。パターンは、1つ以上の文字リテラル、演算子、または構成要素で構成されます。RegEx
-
ASP.NET MVC(C#)でViewBagを使う方法を徹底解説!基本の仕組みと実装例
ViewBagは、C# 4.0で導入された「dynamic」機能を活用した仕組みです。この機能により、オブジェクトに対してプロパティを動的に追加することが可能になります。内部的には、Controllerクラスの基底クラスであるControllerBaseクラスが持つdynamic型のプロパティとして実装されています。ViewBagの主な特徴は以下の通りです。データはコントローラーからビューへの一方向のみで受け渡しが可能(ビューからコントローラーへの逆方向は不可)リダイレクトが発生すると、ViewBagの値はnullになる強い型付けへの変換を行わずに、任意の数のフィールドを動的に追加・取得できる
-
ASP.NET MVC C#におけるNonAction属性(NonActionAttribute)の重要性とは?
NonAction 属性は、コントローラー内にパブリックメソッドを定義したいものの、それをアクションメソッドとして扱いたくない場合に使用します。アクションメソッドとは、URLを使って呼び出すことができるコントローラー内のパブリックメソッドのことです。そのため、デフォルトではコントローラー内に定義されたすべてのパブリックメソッドは、URLリクエスト経由で呼び出し可能な状態になっています。コントローラー内のパブリックメソッドへのアクセスを制限したい場合は、NonAction属性を利用することで実現できます。ここで、MyMethod1 と MyMethod2 という2つのパブリックメソッドを持つ H
-
ASP.NET MVC(C#)のデフォルトルートを構成する3つのセグメントとは?
ASP.NET MVCのルーティングモジュールは、ブラウザから送られてくるリクエストを、特定のMVCコントローラーのアクションへマッピングする役割を担っています。アプリケーションの起動時には、フレームワークのルートテーブルに1つ以上のURLパターンが登録され、「このパターンに一致するリクエストはどう処理すべきか」をルーティングエンジンに伝えます。実行時にルーティングエンジンがリクエストを受け取ると、そのURLを登録済みのパターンと照合し、マッチした結果に基づいて適切なレスポンスを返します。ルーティングの目的と仕組みASP.NETがルーティングを導入した最大の目的は、各URLを物理ファイルにマッ
-
ASP.NET MVC(C#)でフィルターを適用できる3つのレベルとは?
ASP.NET MVCアプリケーションでは、フィルターを3つのレベルで適用することができます。それぞれ適用範囲が異なるため、目的に応じて使い分けることが重要です。アクションメソッドレベルコントローラーレベルグローバルレベルアクションメソッドレベルアクションメソッドレベルで適用したフィルターは、その特定のアクションメソッドに対してのみ機能します。同じコントローラー内の他のアクションメソッドには影響しません。using System.Web.Mvc; namespace DemoMvcApplication.Controllers{ public class HomeController
-
ASP.NET MVC C#におけるChildActionOnly属性とは?使い方をわかりやすく解説
ChildActionOnly属性とは?ASP.NET MVCにおいて、[ChildActionOnly]属性が付与されたアクションメソッド(子アクション/Child Action)は、子リクエスト(child request)からのみアクセス可能です。そのため、ブラウザからURLを直接指定してアクセスすることはできません。URL経由で直接アクセスしようとすると、実行時に次のようなエラーがスローされます。「Child action is accessible only by a child request」(子アクションは子リクエストからのみアクセスできます)子アクションメソッドは、ビュー(V
-
ASP.NET Web API(C#)のコンテンツネゴシエーションとは?仕組みと実装例を解説
コンテンツネゴシエーションとはコンテンツネゴシエーション(Content Negotiation)とは、同じリソースに対して複数の表現形式が存在する場合に、その中から最適な表現を選択する仕組みのことです。具体的には、リクエストに含まれるAcceptヘッダーの値に応じて、サーバーがレスポンスの形式を決定します。HTTPにおけるコンテンツネゴシエーションの主なメカニズムは、以下のリクエストヘッダーです。Accept − レスポンスとして受け入れ可能なメディアタイプ。例:「application/json」「application/xml」、あるいは「application/vnd.example+
-
C# ASP.NET Web APIにおけるAuthorizeAttributeの使い方とは?
認可(Authorization)とは、認証済みのユーザーが特定のリソース(Web APIリソース)に対してアクションを実行することを許可されているかどうかを判断するプロセスです。例えば、データの取得や投稿を行う権限を持っているかどうかも、認可の一部に含まれます。認可プロセスはコントローラーのアクションメソッドが実行される前に実行されるため、そのリソースへのアクセスを許可するかどうかを柔軟に制御できます。 ASP.NET Web APIでは、認可は「認可フィルター(Authorization Filters)」を使って実装されます。このフィルターはコントローラーのアクションメソッドが実行され
-
C#でHttpClientを使ってASP.NET Web APIのエンドポイントを他のアプリケーションから呼び出す方法
HttpClientクラスとは HttpClientクラスは、指定したURLに対してHTTPリクエストを送信し、HTTPレスポンスを受信するための基底クラスを提供します。HttpClientは.NETフレームワークがサポートする非同期機能であり、複数の同時リクエストを効率的に処理できます。内部的にはHttpWebRequestおよびHttpWebResponseの上位層として実装されており、すべてのメソッドが非同期で動作します。HttpClientはSystem.Net.Http名前空間で利用できます。 この記事では、まずStudentControllerとそれに対応するアクションメソッドを持