값이 X에 할당됩니다 무엇인가?문자열 할당 -Clarification
내가
Console.WriteLine(x.CompareTo(null)==0);,it returns false.
값이 X에 할당됩니다 무엇인가?문자열 할당 -Clarification
내가
Console.WriteLine(x.CompareTo(null)==0);,it returns false.
새 char [0]을 할당하면 문자열이 null이 아닙니다. 그것은 비어 있습니다.
당신은 할 수 : .NET에 적어도 놀라움의 원칙을 위반
Console.WriteLine(string.IsNullOrEmpty(x));
x
이 빈 문자열, x = ""
와 동일합니다 검사 할 때.
null
및 ""
은 두 개의 별개의 문자열 값입니다. 특히 null
은 null 참조이므로 인스턴스 구성원을 호출 할 수 없습니다. 따라서 x
이 null이면 x.Length
은 NullReferenceException
을 던집니다.
대조적으로 ""
(또는 String.Empty
)은 0자를 포함하는 일반적인 문자열입니다. 해당 인스턴스 구성원은 정상적으로 작동하며 은 0과 같습니다.
문자열이 null
이거나 비어 있는지 확인하려면 String.IsNullOrEmpty
(놀라운)을 호출하십시오.
문자열이 null이 아니며 비어 있습니다.
Console.WriteLine(x.CompareTo(String.Empty)==0);
당신은 여기에 흥미로운 사건을 포착했습니다. 때마다 당신은
string x = new string(new char[0]);
당신이 같은 문자열에 대한 참조를 얻을 것이다 실행합니다.
(편집 :.. 그냥 이것에 대해 매우 명확합니다 - 그것은 null 이외의 참조입니다 그것은 단지 당신이 생성자의 다른 양식을 사용하거나 문자열 리터럴을 사용하는 경우처럼 문자열을 의미)
내가 그것을 는 ""하지만 지금은 같은 하나가 나타납니다하기 위해 다른 문자열을 참조하는을 사용 확신 : 지금까지 내가 알고 있어요으로
using System;
public class Test
{
static void Main()
{
object x = new string(new char[0]);
object y = new string(new char[0]);
object z = "";
Console.WriteLine(x == y); // True
Console.WriteLine(x == z); // True
}
}
, 이것은 단지 입니다 클래스에 대해 new
을 호출하면 기존 객체에 대한 참조를 반환 할 수 있습니다.
대신을 시도해보십시오
Console.WriteLine(x.CompareTo(string.Empty) == 0);
을이 흥미로운 점이지만, 질문 함께 할 아무것도있다. – SLaks
@Slaks : 나는 그것이 그 질문과 아무 관련이 없다는 것을 알지 못합니다. 특히 그것은 문자열에 대한 참조이므로 null이 아닙니다. 나는 매번 동일한 참조를 받는다는 사실이 그 질문에 완전히 관련되어 있다고 생각합니다. –
위와 같이 인스턴스화 된 두 개의 문자열이 동일한 주소를 가질 것이라고 말하는 것과 동일합니까? –