116

Parse() と TryParse() の違いは何ですか?

int number = int.Parse(textBoxNumber.Text);

// The Try-Parse Method
int.TryParse(textBoxNumber.Text, out number);

Try-Catch ブロックのような形式のエラー チェックはありますか?

4

8 に答える 8

163

Parse値を解析できない場合は例外をスローしますが、成功したかどうかを示す をTryParse返します。bool

TryParsetry/catch内部だけではありません-その要点は、例外なく実装されているため、高速です。実際、実装される可能性が最も高い方法は、Parseメソッドが内部的に呼び出しTryParse、返された場合に例外をスローすることfalseです。

簡単に言えば、Parse値が有効であることが確実な場合に使用します。それ以外の場合は使用してTryParseください。

于 2009-01-22T00:20:11.933 に答える
31

文字列を整数に変換できない場合は、

  • int.Parse()例外をスローします
  • int.TryParse()false を返します (例外はスローしません)
于 2009-01-22T00:18:31.763 に答える
4

TryParse と例外税

文字列から指定されたデータ型への変換が失敗した場合、Parse は例外をスローしますが、TryParse は明示的に例外のスローを回避します。

于 2009-01-22T00:23:34.500 に答える
4

TryParse メソッドを使用すると、何かが解析可能かどうかをテストできます。無効な int を使用して最初のインスタンスのように Parse を試行すると、TryParse で例外が発生し、解析が成功したかどうかを知らせるブール値が返されます。

脚注として、ほとんどの TryParse メソッドに null を渡すと、例外がスローされます。

于 2009-01-22T00:18:52.107 に答える
0

TryParse は値を返しません。解析が成功したかどうかを示すステータス コードを返します (例外はスローしません)。

于 2009-01-22T00:19:16.740 に答える
0

記録のために、私は 2 つのコードをテストしています。単純に文字列から数値への変換を試み、失敗した場合は数値をゼロに割り当てます。

        if (!Int32.TryParse(txt,out tmpint)) {
            tmpint = 0;
        }

と:

        try {
            tmpint = Convert.ToInt32(txt);
        } catch (Exception) {
            tmpint = 0;
        }

C# の場合、try&Catch の代替が例外をスローしたため、tryparse を使用するのが最適なオプションです。

A first chance exception of type 'System.FormatException' occurred in mscorlib.dll

遅くて辛いのは嫌だけど、デバッグの例外が解決しないとコードが止まらない。

于 2012-02-18T16:43:57.953 に答える
0

非常に古い投稿であることは承知していますが、Parse と TryParse の詳細をいくつか共有することを考えました。

DateTime を String に変換する必要があり、datevalue が null または string.empty の場合に例外が発生するシナリオがありました。これを克服するために、Parse を TryParse に置き換え、デフォルトの日付を取得します。

古いコード:

dTest[i].StartDate = DateTime.Parse(StartDate).ToString("MM/dd/yyyy");
dTest[i].EndDate = DateTime.Parse(EndDate).ToString("MM/dd/yyyy");

新しいコード:

DateTime startDate = default(DateTime);
DateTime endDate=default(DateTime);
DateTime.TryParse(dPolicyPaidHistories[i].StartDate, out startDate);
DateTime.TryParse(dPolicyPaidHistories[i].EndDate, out endDate);

別の変数を宣言し、TryParse の Out として使用する必要があります。

于 2017-05-31T09:13:25.343 に答える
-1

double.Parse("-"); double.TryParse("-", out parsed); 中に例外が発生します。は 0 に解析されるので、TryParse はより複雑な変換を行うと思います。

于 2011-07-22T00:58:13.200 に答える