IsNullOr 또는 Empty와 IsNullOr의 차이C#의 WhiteSpace
C#에서 이러한 명령 간의 차이점은 무엇입니까?
string text= " ";
1-string.IsNullOrEmpty(text.Trim())
2-string.IsNullOrWhiteSpace(text)
IsNullOrWhiteSpace
는 우수한 성능을 제공한다는 점을 제외하고는 다음 코드와 유사한 편의성 방법입니다.return String.IsNullOrEmpty(value) || value.Trim().Length == 0;
공백 문자는 유니코드 표준에 의해 정의됩니다.
IsNullOrWhiteSpace
메소드는 true 값을 반환하는 문자를 해석합니다. 값이 true 값으로 전달될 때Char.IsWhiteSpace
공백 문자로서의 메서드입니다.
단답:
일반적으로 사용되는 공간" "
탭"\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
참고 항목답변 정보: 공백 문자
긴 답변:
또한 몇 개의 다른 공백 문자도 있습니다. 아마도 당신은 전에 사용한 적이 없을 것입니다.
- 유니코드 카테고리의 구성원입니다.문자를 포함하는 공백 구분 기호 범주
SPACE (U+0020), NO-BREAK SPACE (U+00A0), OGHAM SPACE MARK (U+1680), EN QUAD (U+2000), EM QUAD (U+2001), EN SPACE (U+2002), EM SPACE (U+2003), THREE-PER-EM SPACE (U+2004), FOUR-PER-EM SPACE (U+2005), SIX-PER-EM SPACE (U+2006), FIGURE SPACE (U+2007), PUNCTUATION SPACE (U+2008), THIN SPACE (U+2009), HAIR SPACE (U+200A), NARROW NO-BREAK SPACE (U+202F), MEDIUM MATHEMATICAL SPACE (U+205F), and IDEOGRAPHIC SPACE (U+3000)
. - 유니코드 카테고리의 구성원입니다.Line Separator 범주는 다음 항목으로만 구성됩니다.
LINE SEPARATOR character (U+2028)
. - 유니코드 카테고리의 구성원입니다.단락 구분자 범주는 단독으로 구성됩니다.
PARAGRAPH SEPARATOR character (U+2029)
. - 캐릭터들
CHARACTER TABULATION (U+0009), LINE FEED (U+000A), LINE TABULATION (U+000B), FORM FEED (U+000C), CARRIAGE RETURN (U+000D), and NEXT LINE (U+0085)
.
https://learn.microsoft.com/en-us/dotnet/api/system.char.iswhitespace
첫 번째 방법은 문자열이 null인지 빈 문자열인지 확인합니다.이 예제에서는 트리밍하기 전에 null을 확인하지 않으므로 null 참조를 사용할 위험이 있습니다.
1- string.IsNullOrEmpty(text.Trim())
두 번째 방법은 문자열이 null인지 또는 문자열의 임의 공백 수(공백 문자열 포함)인지 확인합니다.
2- string .IsNullOrWhiteSpace(text)
방법IsNullOrWhiteSpace
표지 설명IsNullOrEmpty
하지만 그것은 또한 돌아옵니다.true
문자열에 공백 문자만 포함된 경우.
구체적인 예에서 2) 접근법에서 null 참조 예외의 위험을 실행할 때 사용해야 합니다. null일 수 있는 문자열에 대해 트림을 호출하기 때문입니다.
String.IsNullOrEmpty(string value)
돌아온다true
문자열이 null이거나 비어 있는 경우.참고로 빈 문자열은 "(두 개의 이중 따옴표 문자)로 표시됩니다.
String.IsNullOrWhitespace(string value)
돌아온다true
문자열이 null이거나 비어 있거나 공백 또는 탭과 같은 공백 문자만 포함된 경우.
공백으로 계산되는 문자를 보려면 다음 링크를 참조하십시오. http://msdn.microsoft.com/en-us/library/t809ektx.aspx
이것은 디컴파일 후 메소드 구현입니다.
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;
}
그래서 IsNullOr은 명백합니다.또한 WhiteSpace 메서드는 전달되는 값에 공백이 포함되어 있는지 확인합니다.
공백은 https://msdn.microsoft.com/en-us/library/system.char.iswhitespace(v=vs.110).aspx 을 참조합니다.
문자열(의 경우 는 만의당문열자변경수우당신의신약당▁()▁variable▁if변▁(수열경▁your우자in문▁string의▁casetext
)이 수 큰 null은 null입니다. 이것은 큰 차이를 만듭니다.
1-string.IsNullOrEmpty(text.Trim())
--> null 객체의 호출 모드 이후 예외
2-string.IsNullOrWhiteSpace(text)
으로 null을 하고 있기 .
첫 번째 옵션을 사용하여 동일한 동작을 제공하려면 먼저 Null이 아닌지 확인한 후 트림() 방법을 사용해야 합니다.
if ((text != null) && string.IsNullOrEmpty(text.Trim())) { ... }
String.IsNullOr화이트스페이스(텍스트)는 공백이 있는 빈 문자열도 포함하지만 다른 텍스트는 포함하지 않으므로 대부분의 경우 사용해야 합니다.
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가 반환됩니다!
[성능 테스트] 혹시나 궁금해 하는 사람이 있을지도 몰라 스톱워치 테스트에서 비교.
if(통과 없음)자르기().길이 > 0)
if (!string)IsNull 또는화이트스페이스(패스 없음)
결과는 다음과 같습니다.
트리밍 길이(빈 값 = 15)
값이 비어 있지 않은 트림 길이 = 52
IsNull 또는빈 값을 가진 WhiteSpace = 11
IsNull 또는빈 값이 아닌 WhiteSpace = 12
언급URL : https://stackoverflow.com/questions/18710644/difference-between-isnullorempty-and-isnullorwhitespace-in-c-sharp
'source' 카테고리의 다른 글
CSS ":hover"를 활성화하는 순수 자바스크립트에서 마우스 오버를 시뮬레이션하려면 어떻게 해야 합니까? (0) | 2023.08.05 |
---|---|
ES2015에서만 0에서 9까지의 범위의 숫자를 생성하는 방법은 무엇입니까? (0) | 2023.08.05 |
Gulp.js 작업, src로 돌아옵니까? (0) | 2023.08.05 |
루프 증가/감소에 대한 a가 하나 이상 증가할 수 있습니까? (0) | 2023.08.05 |
부트스트랩 3 Chevron 아이콘으로 표시 상태 축소 (0) | 2023.08.05 |