2011-08-11 16 views

答えて

56

Convert.ToBoolean(string)実際にはbool.Parse()がコールされるため、ヌル以外の場合はstringに機能的な違いはありません。 (bool.Parse()ArgumentNullExceptionをスローに対し、string S、Convert.ToBoolean()戻りfalseヌルの場合。)

あなたの入力がNULLでないことを特定しているとき、あなた自身を一のヌルのチェックを保存するので、実際、あなたは、bool.Parse()を使用する必要があることを考えます。 Parse()だけstring秒であるのに対し、当然の

Convert.ToBoolean()は、あなたが他の多くの組み込み型からboolを生成することを可能にする他のオーバーロードの数を持っています。

type.Parse()メソッドの面では、すべての組み込み数値型はParse()TryParse()のメソッドを持っています。 DateTimeにはこれらの文字列が含まれています。さらに、ParseExact()/TryParseExact()のメソッドを使用すると、日付の形式を指定することができます。ここで

+1

FYI:TryParse()は、Compact Frameworkの一部ではありません。 – jp2code

+0

ありがとうございました。だから、2つの間でパフォーマンスに違いはありませんか、またはBoolean.Parse(文字列)を使用して非常に小さな利益を言うことができますか? – mbrownnyc

+1

@mbrownnyc入力がヌル文字列ではないと確信しているならば、 'Parse()' *を使って非常にマイナーな(おそらく目に見えない)ゲインを得るでしょう。あなたが不明な場合は、 'ToBoolean()'を使用してください。チェックが行われます。また、null文字列がfalseになることを望まない場合は、自分でチェックを行い、nullでない場合は 'Parse()'を呼び出します。 – dlev

2

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

ほとんどの場合、C#のプリミティブ型のすべてではありませんが、対応する* .Parse/Convert.To *メソッドがあり、Boolean.Parse()/Convert.ToBoolean()と同じ目的を果たします。

18

は短いデモです:

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 

注意:!= "true" をbool.TrueStringは、唯一== bool.TrueStringので、そこブールTrueStringとFalseStringの二つの性質もありますが、注意してください"True"

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

'Convert.ToBoolean(" 1 "); //フォーマット例外 –

関連する問題