に高レベルのタイプベースの制御フローを実装します C#は多機能性で知られていますが、常にタイプに応じて切り替えることができない重要な制限でした。ただし、新しい言語バージョンの出現により、この制限を回避するために多くの代替方法が出現しています。
c#7モードマッチング
C#7モードマッチングを導入します。これは、タイプに応じて直接切り替えることができるエレガントなメカニズムです。次の例を考えてみましょう:
モードマッチングは、スイッチステートメントでさまざまなタイプを処理するためのシンプルでタイプのセキュリティ方法を提供し、それによりコードの読みやすさを改善し、より効果的な特定のタイプの操作を促進します。C#6のnameof()演算子
switch (shape)
{
case Circle c:
WriteLine($"圆形,半径为 {c.Radius}");
break;
// ...
}
c#6ユーザーの場合、nameof()演算子は代替ソリューションを提供します。タイプ名をターゲットとして文字列として使用することにより、以下に示すようにスイッチステートメントを作成できます。
モードマッチングほど普遍的ではありませんが、この方法は、C#6以前のバージョンで分類するための信頼できる方法を提供します。
c#5以前のバージョンは、タイプ名のタイプ名を使用しています
C#5以下を使用しているユーザーの場合、柔軟性は低いものの、ハードコードタイプ名文字列を使用した基本的なスイッチステートメントはまだ実行可能な方法です。新しい対応するオブジェクトの複雑さはありませんが、この方法は、C#の初期バージョンの単純なタイプベースの決定のニーズを引き続き満たすことができます。
<code class="language-csharp">switch (o.GetType().Name) { case nameof(AType): break; // ... }</code>
以上がC#で優れたタイプベースの制御フローを達成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。