170

C# でのこれらのコマンドの違いは何ですか

string text= "  ";
1-string.IsNullOrEmpty(text.Trim())

2-string.IsNullOrWhiteSpace(text)
4

8 に答える 8

229

IsNullOrWhiteSpace優れたパフォーマンスを提供することを除いて、次のコードに似た簡易メソッドです。

return String.IsNullOrEmpty(value) || value.Trim().Length == 0;

空白文字は Unicode 標準で定義されています。メソッドは、 メソッドIsNullOrWhiteSpaceに渡されたときに true の値を返すすべての文字をChar.IsWhiteSpace空白文字として解釈します。

于 2013-09-10T04:21:01.850 に答える
54

最初のメソッドは、文字列が null または空白の文字列かどうかを確認します。あなたの例では、トリミングする前に null をチェックしていないため、null 参照のリスクがあります

1- string.IsNullOrEmpty(text.Trim())

2 番目のメソッドは、文字列が null であるか、文字列内の任意の数のスペース (空白文字列を含む) であるかをチェックします。

2- string .IsNullOrWhiteSpace(text)

メソッドIsNullOrWhiteSpaceは をカバーしますが、文字列に空白文字のみが含まれている場合IsNullOrEmptyも返します。true

具体的な例では、アプローチ1でnull参照例外のリスクを冒すため、2を使用する必要があります。nullの可能性がある文字列でtrimを呼び出しているためです。

于 2013-09-10T04:21:00.107 に答える
11

String.IsNullOrEmpty(string value)true文字列が null または空の場合に返します。参考までに、空の文字列は "" (2 つの二重引用符文字) で表されます。

String.IsNullOrWhitespace(string value)true文字列が null、空、またはスペースやタブなどの空白文字のみを含む場合に返します。

空白としてカウントされる文字を確認するには、次のリンクを参照してください: http://msdn.microsoft.com/en-us/library/t809ektx.aspx

于 2013-09-10T04:24:51.587 に答える
4

あなたの文字列(あなたの場合は変数text)がnullになる可能性がある場合、これは大きな違いになります:

1- string.IsNullOrEmpty(text.Trim()) --> null オブジェクトのmthodeを呼び出すための例外

2- string.IsNullOrWhiteSpace(text) null の問題は内部でチェックされているため、これは正常に機能します。

最初のオプションを使用して同じ動作を提供するには、最初に null でないかどうかを何らかの方法で確認してから、trim() メソッドを使用する必要があります

if ((text != null) && string.IsNullOrEmpty(text.Trim())) { ... }
于 2016-10-24T09:49:00.823 に答える