2つの方法の違いは何ですか
Convert.ToBoolean()
そして
Boolean.Parse()
?
どちらかを使用する理由はありますか?
また、他に注意すべきtype.Parse()
メソッドはありますか?
おかげで、
マット
Convert.ToBoolean(string)
は実際にbool.Parse()
を呼び出します。そのため、null以外のstring
sの場合、機能的な違いはありません。 (null string
sの場合、Convert.ToBoolean()
はfalse
を返しますが、bool.Parse()
はArgumentNullException
をスローします。)
その事実を考えると、1つのnullチェックを保存するため、入力がnullでないことが確実な場合はbool.Parse()
を使用する必要があります。
Convert.ToBoolean()
にはもちろん、他の多くの組み込み型からbool
を生成できる他のオーバーロードがいくつかありますが、Parse()
はstring
s専用です。
Type.Parse()メソッドに注目すると、すべての組み込み数値型にはParse()
メソッドとTryParse()
メソッドがあります。 DateTime
には、これらと、追加のParseExact()
/TryParseExact()
メソッドがあり、日付の予想される形式を指定できます。
これは短いデモです:
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の2つのプロパティもありますが、bool.TrueString != "true"
、のみbool.TrueString == "True"
Console.WriteLine(bool.TrueString); // True
Console.WriteLine(bool.FalseString); // False
Boolean.Parse()
は、論理ブール値の文字列表現をブール値に変換します。 Convert.ToBoolean()
には複数の オーバーロード があり、プリミティブ型を同等のブール型に変換します。
すべてではありませんが、C#のほとんどのプリミティブ型には、Boolean.Parse()/Convert.ToBoolean()
と同じ目的を果たす* .Parse/Convert.To *メソッドが関連付けられています。