プロパティ パターンを使用した表現力豊かな C# コード
C# は、F# にインスパイアされた機能で成長してきました.
最も興味深いのは Pattern Matching です.
パターン マッチングの導入により、プロパティ パターンが生まれました.
プロパティ パターンには注意が必要です.それらは C# 8 に含まれて以来、C# 9 だけでなく C# 10 でも改善され、進化してきました.
プロパティ パターンは、コードをより表現力豊かにする興味深い方法であり、この投稿ではその方法を説明します.
プロパティ パターンを使用して、式のプロパティをネストされたパターンに一致させます.
したがって、プロパティ パターンを使用すると、次のようになります.
これに:
プロパティ パターンが switch 式で使用されているのを見るのは一般的ですが、それだけに限定しないでください.
プロパティ パターンは、スイッチ ケース ガード、if、ブール代入、条件のキャッチなどのコンテキストで使用できます.
プロパティ パターンは、プロパティだけでなく、ネストされたプロパティのテストにも使用できます. C# 10 Extended property patterns を使用すると、さらに簡単になります.
プロパティ パターンでは、「&&」、「||」は使用しません.または "!"の代わりに、"and"、"or"、"not"を使用できます.
括弧を使用して優先順位を指定することもできます.
次回ブール式を記述する必要がある場合は、ここで学んだことを試してみてください.現時点では、これは C# コード ベースではそれほど一般的ではなく、必要な認知負荷が増加することを私は知っています.長年の C# 開発者であれば、コードの書き方は異なりますが、最終的には、コードはより表現力豊かになると思います.どう思いますか?
これがお役に立てば幸いです!このようなヒントをさらに得るには、私に従ってください.連絡を取り合いましょう!
最も興味深いのは Pattern Matching です.
パターン マッチングの導入により、プロパティ パターンが生まれました.
プロパティ パターンには注意が必要です.それらは C# 8 に含まれて以来、C# 9 だけでなく C# 10 でも改善され、進化してきました.
プロパティ パターンは、コードをより表現力豊かにする興味深い方法であり、この投稿ではその方法を説明します.
プロパティパターンとは
プロパティ パターンを使用して、式のプロパティをネストされたパターンに一致させます.
static bool IsFirstOfTheMonth(DateTime date) => date is { Day: 1 };
したがって、プロパティ パターンを使用すると、次のようになります.
private static (bool isValid, string reason) Validate(Note note)
{
if (note == null)
throw new ArgumentNullException(nameof(note));
if (note.Title.Length < 5 || note.Title.Length > 50)
return (false, "Title should be 5 to 50 char long");
if (note.Content == null)
return (false, "Content is required");
return (true, "");
}
これに:
private static (bool isValid, string reason) Validate(Note note)
=> note switch
{
{ Title.Length: < 5 or > 50 } => (false, "Title should be 5 to 50 char long"),
{ Content: null } => (false, "Content is required"),
null => throw new ArgumentNullException(nameof(note)),
_ => (true, "")
};
どこで使用できますか
プロパティ パターンが switch 式で使用されているのを見るのは一般的ですが、それだけに限定しないでください.
プロパティ パターンは、スイッチ ケース ガード、if、ブール代入、条件のキャッチなどのコンテキストで使用できます.
try
{
//...
}
catch (NpgsqlException ex) when (ex is {Code: "42P01"})
{
//...
}
ネストされたパターン
プロパティ パターンは、プロパティだけでなく、ネストされたプロパティのテストにも使用できます. C# 10 Extended property patterns を使用すると、さらに簡単になります.
if (person is Student { Address.CountryCode: "PT" })
優先順位
プロパティ パターンでは、「&&」、「||」は使用しません.または "!"の代わりに、"and"、"or"、"not"を使用できます.
括弧を使用して優先順位を指定することもできます.
person is Student ({ Address.CountryCode: "PT" } or { Address.CountryCode: "ES" }) and { Age: < 20}
まとめ
次回ブール式を記述する必要がある場合は、ここで学んだことを試してみてください.現時点では、これは C# コード ベースではそれほど一般的ではなく、必要な認知負荷が増加することを私は知っています.長年の C# 開発者であれば、コードの書き方は異なりますが、最終的には、コードはより表現力豊かになると思います.どう思いますか?
これがお役に立てば幸いです!このようなヒントをさらに得るには、私に従ってください.連絡を取り合いましょう!
Reference
この問題について(プロパティ パターンを使用した表現力豊かな C# コード), 我々は、より多くの情報をここで見つけました https://dev.to/gsferreira/expressive-c-code-with-property-patterns-gpoテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol