Convert.ToBoolean(string)とBoolean.Parse(string)の違いは何ですか?


80

2つの方法の違いは何ですか

Convert.ToBoolean()

そして

Boolean.Parse()

どちらかを使用する理由はありますか?

さらに、他type.Parse()に注意すべき方法はありますか?

ありがとう、

マット

回答:


79

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()メソッドがあります。


詳細をありがとう。したがって、2つの間にパフォーマンスの違いはありません。または、Boolean.Parse(string)を使用することで、ゲインが非常に小さいと言えますか?
mbrownnyc 2011

1
@mbrownnycParse() 入力がヌル文字列ではないことが確実な場合は、を使用することで、ごくわずかな(おそらく知覚できない)ゲインが得られます。よくわからない場合ToBoolean()は、を使用してください。チェックが行われます。また、null文字列がfalseになることを望まない場合は、自分でチェックを実行し、Parse()nullでない場合は呼び出します。
dlev 2011

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

注:そこの二つの性質もあるboolので、TrueStringとFalseStringが、しかし、注意してくださいbool.TrueString != "true"、だけbool.TrueString == "True"

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

2
Convert.ToBoolean("1"); // Format Exception
ロバートマッキー2016年

3

Boolean.Parse()論理ブール値の文字列表現をブール値に変換します。プリミティブ型をブール値に変換するConvert.ToBoolean()複数のオーバーロードがあります。

すべてではないにしても、C#のほとんどのプリミティブ型には、と同じ目的を果たす* .Parse / Convert.To *メソッドが関連付けられていBoolean.Parse()/Convert.ToBoolean()ます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.