2つの方法の違いは何ですか
Convert.ToBoolean()
そして
Boolean.Parse()?
どちらかを使用する理由はありますか?
さらに、他type.Parse()に注意すべき方法はありますか?
ありがとう、
マット
回答:
Convert.ToBoolean(string)bool.Parse()とにかく実際に呼び出すので、null以外stringの場合、機能的な違いはありません。(nullstringの場合、をConvert.ToBoolean()返しますfalseが、をbool.Parse()スローしArgumentNullExceptionます。)
その事実を考えるとbool.Parse()、入力がnullでないことが確実な場合に使用する必要があります。これは、nullチェックを1つ保存するためです。
Convert.ToBoolean()もちろん、他のbool多くの組み込み型からを生成できるようにする他の多くのオーバーロードがありますが、Parse()はstrings専用です。
注意すべきtype.Parse()メソッドに関しては、すべての組み込み数値型にはメソッドParse()と同様にありTryParse()ます。DateTimeこれらと、日付の予想される形式を指定できる追加のParseExact()/TryParseExact()メソッドがあります。
Parse() 入力がヌル文字列ではないことが確実な場合は、を使用することで、ごくわずかな(おそらく知覚できない)ゲインが得られます。よくわからない場合ToBoolean()は、を使用してください。チェックが行われます。また、null文字列がfalseになることを望まない場合は、自分でチェックを実行し、Parse()nullでない場合は呼び出します。
これが短いデモです:
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
注:そこの二つの性質もあるboolので、TrueStringとFalseStringが、しかし、注意してくださいbool.TrueString != "true"、だけbool.TrueString == "True"
Console.WriteLine(bool.TrueString); // True
Console.WriteLine(bool.FalseString); // False
Convert.ToBoolean("1"); // Format Exception