web-dev-qa-db-ja.com

C#で空の文字列をチェックする最も望ましい方法

コードパフォーマンスを検討する場合、C#で空をチェック文字列(初期化について( ではない! )ではない)の最善の方法は何ですか? (以下のコードを参照)

string a;

// some code here.......


if(a == string.Empty)

または

if(string.IsNullOrEmpty(a))

または

if(a == "")

任意の助けをいただければ幸いです。 :)

52
Allan Chua

空の文字列をチェックするために、文字列をString.Emptyまたは""と比較しないでください。

代わりに、String.Length == 0を使用して比較

string.Empty""の違いは非常に小さいです。 String.Emptyはオブジェクトを作成しませんが、""はチェックのためにメモリ内に新しいオブジェクトを作成します。したがって、string.emptyはメモリ管理の方が優れています。しかし、string.Length == 0との比較はさらに高速で、空の文字列をチェックするより良い方法です。

89
Yogesh

最善の方法はif(string.IsNullOrEmpty(a))であると思います。これは他の方法よりも高速で安全だからです。

34
Gregory Nozik
string.IsNullOrEmpty(a)

nULL ||の両方をチェックします空の

これが実装です:

public static bool IsNullOrEmpty(string value)
{
    if (value != null)
    {
        return (value.Length == 0);
    }
    return true;
}
17
Royi Namir

Length も使用できます

string input = "";

if (input != null)
{
    if (input.Length == 0)
    {

    }
}  

完全なチェックのための拡張メソッドを作成します。

public static bool IsEmpty(this string s)
{
  if(s == null) return true;
  return string.IsNullOrEmpty(s.Trim()); // originally only (s)
}

申し訳ありませんが、適切なコードではありませんが修正されました。これで、文字列が空であるか、トリミング後に空であるかがわかります。

2
Karel Frajták

遅い到着:

if a == ""

コード分​​析の警告CA1820が発生するため、絶対にすべきではありません。完全な分析については、 CA1820:文字列の長さを使用した空の文字列のテスト を参照してください

1
Dave

String.Empty値は実行時にのみ解読されますが、反対側ではコンパイル時に「」値が認識されます。

それがこれら2つの唯一の違いです。

しかし、ベストプラクティスとして、明日M $が何らかの理由で空の文字列値を ""ではなく ''として使用することを決定した場合、コードはどこでも変更する必要があります。その場合、String.Emptyを使用するのが最善です。

Path.Combineでも同じプラクティスが使用されます。

0
Zenwalker