-2

GUI を作成しましたValueBox.Text。これは文字列「randomstring」です。私がやりたいことは次のとおりです。

文字 && 数字または文字のみが含まれる場合ValueBox.Textは数字のみ double valueLenght = Convert.ToDouble(ValueBox.Text);が含まれる場合、MSDN から Convert.ToDouble(string) は 0 を返すと考えました。ここではそうではありません。コードは次の場所に移動します。

protected override void Dispose(bool disposing)
{
    if (disposing && (components != null))
    {
        components.Dispose();
    }

    base.Dispose(disposing);
}

次に、からの例外を与えますmscorlib

4

3 に答える 3

6

Convert.ToDouble文字列を数値に変換できない場合、例外をスローします。

おそらく試してみたいでしょうDouble.TryParse。戻り値はtrue、変換が成功した場合とfalseそうでない場合です。out doubleパラメータは結果を受け取ります。

于 2012-10-12T15:47:52.140 に答える
1

Convert は、変換しようとしているオブジェクトが変換可能であることを前提としています。そうでない場合は、例外がスローされます。代わりに、必要なオブジェクト タイプで使用tryParse()します。

string text = "asdsad";
double d;
if (!double.TryParse(text, out d))
{
     // Not a double
}
于 2012-10-12T15:51:19.573 に答える
1

Convert.ToDouble例外の後、プログラムに残っているのはフォーム/リソースの破棄だけであることをデバッグして発見していると思います。

他の人が示唆しているようDouble.TryParseに、代わりに使用することをお勧めします。ブール出力を使用して、テキスト ボックスに (正常に解析された) 数値が含まれているかどうかを判断できるようになったためです。

double myDouble;
if (Double.TryParse(textBox.Text, out myDouble))
{
    // Successful conversion
}
else
{
    // Conversion failed
}

Convertこれは、例外に依存するよりも優れています。何かの結果を判断するためにを使用try/catchすると、処理が遅くなるだけでなく、悪い習慣と見なされます。

于 2012-10-12T15:54:16.113 に答える