コードパフォーマンスを検討する場合、C#で空をチェック文字列(初期化について( ではない! )ではない)の最善の方法は何ですか? (以下のコードを参照)
string a;
// some code here.......
if(a == string.Empty)
または
if(string.IsNullOrEmpty(a))
または
if(a == "")
任意の助けをいただければ幸いです。 :)
空の文字列をチェックするために、文字列をString.Empty
または""
と比較しないでください。
代わりに、String.Length == 0
を使用して比較
string.Empty
と""
の違いは非常に小さいです。 String.Empty
はオブジェクトを作成しませんが、""
はチェックのためにメモリ内に新しいオブジェクトを作成します。したがって、string.emptyはメモリ管理の方が優れています。しかし、string.Length == 0
との比較はさらに高速で、空の文字列をチェックするより良い方法です。
最善の方法はif(string.IsNullOrEmpty(a))
であると思います。これは他の方法よりも高速で安全だからです。
string.IsNullOrEmpty(a)
nULL ||の両方をチェックします空の
これが実装です:
public static bool IsNullOrEmpty(string value)
{
if (value != null)
{
return (value.Length == 0);
}
return true;
}
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)
}
申し訳ありませんが、適切なコードではありませんが修正されました。これで、文字列が空であるか、トリミング後に空であるかがわかります。
遅い到着:
if a == ""
コード分析の警告CA1820が発生するため、絶対にすべきではありません。完全な分析については、 CA1820:文字列の長さを使用した空の文字列のテスト を参照してください
String.Empty値は実行時にのみ解読されますが、反対側ではコンパイル時に「」値が認識されます。
それがこれら2つの唯一の違いです。
しかし、ベストプラクティスとして、明日M $が何らかの理由で空の文字列値を ""ではなく ''として使用することを決定した場合、コードはどこでも変更する必要があります。その場合、String.Emptyを使用するのが最善です。
Path.Combineでも同じプラクティスが使用されます。