質問

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

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

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

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

役に立ちましたか?

解決

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

tryは内部的にcatch / falseだけではありません-それの全体的なポイントは、高速であるように例外なしで実装されることです。実際、最も実装される可能性の高い方法は、内部的に<=>メソッドが<=>を呼び出し、それが<=>を返す場合に例外をスローすることです。

一言で言えば、値が有効であることが確実な場合は<=>を使用します。それ以外の場合は<=>を使用します。

他のヒント

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

  • int.Parse()は例外をスローします
  • int.TryParse()はfalseを返します(ただし、例外はスローしません)

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

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

TryParseと例外税

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

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

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

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

and:

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

c#の場合、try <!> amp; Catchの代替が例外をスローするため、tryparseを使用するのが最良のオプションです

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

それは苦痛で遅く、望ましくないことですが、デバッグの例外がそれで停止するように解決されない限り、コードは停止しません。

非常に古い投稿を知っていますが、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として使用する必要があります。

double.Parse(<!> quot;-<!> quot;);例外を発生させますが、 double.TryParse(<!> quot;-<!> quot ;, out parsed); 0に解析します TryParseはより複雑な変換を行うと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top