28

入力テキストを持っていることが何度もありますが、

空の場合(ユーザーがテキストを入力しなかった場合)-DBクエリに「null」を送信したい

and not String.Empty. (または "")

だから私は自分がこれをたくさんやっていることに気づきます:

var mySqlValue =  string.IsNullOrEmpty( tbCustomerId.Text)?null:tbCustomerId.Text;

これは私には醜いようです。

.net は、反対のシナリオに対して他の多くのソリューションを提供します。

        string.IsNullOrEmpty
        string.IsNullOrWhiteSpace
        myProblemVal ?? myDefultVal

私はこれが拡張メソッドによって解決できることを知っています-そして私はそれを行う方法を知っています..

しかし、もっと良いものはありますか?

" " のインテリジェントなコードはありますかif its empty -> null

4

4 に答える 4

28

拡張メソッドを使用できます。

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 値でも機能します。必要なロジックは、これよりも短い方法で表現することはできません。また、特別な構文についても知りません。

于 2012-04-24T09:19:09.263 に答える
8

しかし、もっと良いものはありますか?

いいえ、あなたが質問で説明したこと(拡張メソッド)は絶対に問題ないと主張しますが。そして、質問で説明しているように、他の方向ではヌル合体があります。

于 2012-04-24T09:21:13.137 に答える
8

独自の静的メソッドを宣言します。

public static string NullIfEmpty(string value)
{
  return string.IsNullOrEmpty(value) ? null : value;
}

やっている

MyHelper.NullIfEmpty(value) は、文字列型の静的メソッドの呼び出しよりも醜くはありません...そして、毎回「string.IsNullOrEmpty( tbCustomerId.Text)?null:tbCustomerId.Text」と書くよりもきれいに見えます。

于 2012-04-24T09:20:17.417 に答える