二つの方法Convert.ToBoolean(string)とBoolean.Parse(string)の違いは何ですか?
Convert.ToBoolean()
と
Boolean.Parse()
の違いは何ですか?
どちらか一方を使用する理由はありますか?
さらに、私が注意しなければならない他のtype.Parse()
メソッドがありますか?
おかげで、
マット
二つの方法Convert.ToBoolean(string)とBoolean.Parse(string)の違いは何ですか?
Convert.ToBoolean()
と
Boolean.Parse()
の違いは何ですか?
どちらか一方を使用する理由はありますか?
さらに、私が注意しなければならない他のtype.Parse()
メソッドがありますか?
おかげで、
マット
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()
のメソッドを使用すると、日付の形式を指定することができます。ここで
Boolean.Parse()
はブール値に論理ブール値の文字列表現を変換します。 Convert.ToBoolean()
には複数のoverloadsがあり、プリミティブ型をブール値に変換します。
ほとんどの場合、C#のプリミティブ型のすべてではありませんが、対応する* .Parse/Convert.To *メソッドがあり、Boolean.Parse()/Convert.ToBoolean()
と同じ目的を果たします。
は短いデモです:
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
'Convert.ToBoolean(" 1 "); //フォーマット例外 –
FYI:TryParse()は、Compact Frameworkの一部ではありません。 – jp2code
ありがとうございました。だから、2つの間でパフォーマンスに違いはありませんか、またはBoolean.Parse(文字列)を使用して非常に小さな利益を言うことができますか? – mbrownnyc
@mbrownnyc入力がヌル文字列ではないと確信しているならば、 'Parse()' *を使って非常にマイナーな(おそらく目に見えない)ゲインを得るでしょう。あなたが不明な場合は、 'ToBoolean()'を使用してください。チェックが行われます。また、null文字列がfalseになることを望まない場合は、自分でチェックを行い、nullでない場合は 'Parse()'を呼び出します。 – dlev