Convert.ToBoolean (string)과 Boolean.Parse (string)의 차이점은 무엇입니까?


80

두 방법의 차이점은 무엇입니까

Convert.ToBoolean()

Boolean.Parse()?

둘 중 하나를 사용해야하는 이유가 있습니까?

또한주의 type.Parse()해야 할 다른 방법이 있습니까?

감사,

매트

답변:


79

Convert.ToBoolean(string)bool.Parse()어쨌든 실제로 호출 하므로 null이 아닌 string경우 기능적 차이가 없습니다. (널 위해 stringS, Convert.ToBoolean()반환 false, 반면 bool.Parse()가 발생합니다 ArgumentNullException.)

그 사실을 감안할 때, bool.Parse()자신이 하나의 null 검사를 저장하기 때문에 입력이 null이 아니라고 확신 할 때 사용해야합니다 .

Convert.ToBoolean()물론 당신이 생성 할 수있는 다른 오버로드의 번호를 가진 bool많은 다른 내장의 종류, 반면 Parse()입니다 string만의.

찾아봐야 할 type.Parse () 메서드의 측면에서 모든 내장 숫자 유형에는 메서드 Parse()와 함께 TryParse()있습니다. 날짜에 대한 예상 형식을 지정할 수 DateTime있는 추가 ParseExact()/ TryParseExact()메서드도 있습니다.


세부 사항 주셔서 감사합니다. 따라서 둘 사이의 성능에는 차이가 없습니다. 아니면 Boolean.Parse (string)을 사용하여 매우 작은 이득을 얻을 수 있습니까?
mbrownnyc

1
@mbrownnyc Parse() 입력이 null 문자열이 아니라는 것이 확실한 경우 사용 하면 매우 사소한 (감각 할 수없는) 이득을 얻을 수 있습니다 . 확실하지 않은 경우 확인을 수행하므로을 사용하십시오 ToBoolean(). 그리고 null 문자열이 false가되는 것을 원하지 않으면 직접 확인한 다음 Parse()null이 아닌 경우 호출 하십시오.
dlev

34

다음은 짧은 데모입니다.

object ex1 = "True";
Console.WriteLine(Convert.ToBoolean(ex1)); // True
Console.WriteLine(bool.Parse(ex1.ToString())); // True

object ex2 = "true";
Console.WriteLine(Convert.ToBoolean(ex2)); // True
Console.WriteLine(bool.Parse(ex2.ToString())); // True

object ex3 = 1;
Console.WriteLine(Convert.ToBoolean(ex3)); // True
Console.WriteLine(bool.Parse(ex3.ToString())); // Unhandled Exception: System.FormatException

object ex3 = "1";
Console.WriteLine(Convert.ToBoolean(ex3)); // An unhandled exception of type 'System.FormatException' occurred
Console.WriteLine(bool.Parse(ex3.ToString())); // Unhandled Exception: System.FormatException

object ex4 = "False";
Console.WriteLine(Convert.ToBoolean(ex4)); // False
Console.WriteLine(bool.Parse(ex4.ToString())); // False

object ex5 = "false";
Console.WriteLine(Convert.ToBoolean(ex5)); // False
Console.WriteLine(bool.Parse(ex5.ToString())); // False

object ex6 = 0;
Console.WriteLine(Convert.ToBoolean(ex6)); // False
Console.WriteLine(bool.Parse(ex6.ToString())); // Unhandled Exception: System.FormatException

object ex7 = null;
Console.WriteLine(Convert.ToBoolean(ex7)); // False
Console.WriteLine(bool.Parse(ex7.ToString())); // Unhandled Exception: System.NullReferenceException

참고 : boolTrueString 및 FalseString의 두 가지 속성도 있지만주의해야 bool.TrueString != "true"합니다.bool.TrueString == "True"

Console.WriteLine(bool.TrueString); // True
Console.WriteLine(bool.FalseString); // False

2
Convert.ToBoolean("1"); // Format Exception
Robert McKee 2016 년

3

Boolean.Parse()논리 부울 값의 문자열 표현을 부울 값으로 변환합니다. 기본 형식을 해당하는 부울 형식으로 변환하는 Convert.ToBoolean()여러 오버로드 가 있습니다.

전부는 아니지만 대부분의 C # 기본 형식에는 Boolean.Parse()/Convert.ToBoolean().

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.