web-dev-qa-db-ja.com

Parse v。TryParse

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

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

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

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

102
Kredns

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

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

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

145
Greg Beech

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

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

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

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

3
Ray Booysen

TryParseと例外税

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

3
Gulzar Nazim

記録のために、私は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

それは痛みを伴う低速で望ましくないものですが、デバッグの例外がそれで停止するように解決されない限り、コードは停止しません。

0
magallanes

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

0

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

0
LifeOfPi