入力テキストがあり、それが空の場合 (たとえば、ユーザーがテキストを入力しなかった場合)、DB クエリに null 値を送信したい場合がよくあります。
私はしますない送信したいString.Empty.
(または""
)。
そのため、私は次のようなことをよくやっています。
var mySqlValue = string.IsNullOrEmpty( tbCustomerId.Text)?null:tbCustomerId.Text;
これは私には見苦しいように思えます。.NET では、反対のシナリオに対して他の多くのソリューションが提供されています。
string.IsNullOrEmpty
string.IsNullOrWhiteSpace
myProblemVal ?? myDefultVal
C# には、これを反対方向など、より短い方法で実行できる機能が組み込まれていますか?
独自の拡張メソッドを記述することでこの問題を解決できることはわかっていますし、その方法もわかっています。しかし、それは私が興味を持っている解決策ではありません。
「 」のようなコードを探していますif empty -> null
。
ベストアンサー1
拡張メソッドを使用できます:
public static class Extensions {
public static string NullIfWhiteSpace(this string value) {
if (String.IsNullOrWhiteSpace(value)) { return null; }
return value;
}
}
次のように使用できます:
var mySqlValue = tbCustomerId.Text.NullIfWhiteSpace();
拡張メソッドよりも優れたものによって何を想像しているのか、私にはよくわかりません。「優れた」とは、どのように定義しますか? 短くする? 特別なキーワードを使用する? めったに使用されない演算子を使用して、賢く見せる? これは、すでに値に追加された単一のメソッド呼び出しであり、null 値でも機能します。必要なロジックをこれよりも短い方法で表現することはできません。また、特別な構文も知りません。