web-dev-qa-db-ja.com

C#のIsNullOrEmptyとIsNullOrWhiteSpaceの違い

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

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

2-string.IsNullOrWhiteSpace(text)
107

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

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

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

156
fionbio

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

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

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

2- string .IsNullOrWhiteSpace(text)

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

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

40
TGH

スペース、タブ\tおよび改行\nは違いです

string.IsNullOrWhiteSpace("\t"); //true
string.IsNullOrEmpty("\t"); //false

string.IsNullOrWhiteSpace(" "); //true
string.IsNullOrEmpty(" "); //false

string.IsNullOrWhiteSpace("\n"); //true
string.IsNullOrEmpty("\n"); //false

https://dotnetfiddle.net/4hkpKM

次の回答も参照してください。 空白文字

37
fubo

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

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

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

7
JHubbard80

これは、逆コンパイル後のメソッドの実装です。

    public static bool IsNullOrEmpty(String value) 
    {
        return (value == null || value.Length == 0); 
    }

    public static bool IsNullOrWhiteSpace(String value) 
    {
        if (value == null) return true; 

        for(int i = 0; i < value.Length; i++) { 
            if(!Char.IsWhiteSpace(value[i])) return false; 
        }

        return true;
    }

したがって、IsNullOrWhiteSpaceメソッドは、渡される値に空白が含まれているかどうかもチェックすることは明らかです。

空白の参照: https://msdn.Microsoft.com/en-us/library/system.char.iswhitespace(v = vs.110).aspx

5
Ľuboš Čurgó

文字列(変数text)がnullになる可能性がある場合、これにより大きな違いが生じます。

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

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

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

if ((text != null) && string.IsNullOrEmpty(text.Trim())) { ... }
3
CloudyMarble

[パフォーマンステスト]誰かが疑問に思っている場合に備えて、ストップウォッチテストで比較します

if(nopass.Trim()。Length> 0)

if(!string.IsNullOrWhiteSpace(nopass))



これらは結果でした:

空の値= 15のトリム長

空でない値のトリム長= 52


空の値= 11のIsNullOrWhiteSpace

空でない値= 12のIsNullOrWhiteSpace

0
Italo Pacheco

string.isNullOrWhiteSpace(text)は、ほとんどの場合、空白文字列も含む =。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {
            //Your code goes here
            var str = "";

            Console.WriteLine(string.IsNullOrWhiteSpace(str));              

        }
    }
}

True!を返します

0
vibs2006