Parse() と TryParse() の違いは何ですか?
int number = int.Parse(textBoxNumber.Text);
// The Try-Parse Method
int.TryParse(textBoxNumber.Text, out number);
Try-Catch ブロックのような形式のエラー チェックはありますか?
Parse値を解析できない場合は例外をスローしますが、成功したかどうかを示す をTryParse返します。bool
TryParsetry/catch内部だけではありません-その要点は、例外なく実装されているため、高速です。実際、実装される可能性が最も高い方法は、Parseメソッドが内部的に呼び出しTryParse、返された場合に例外をスローすることfalseです。
簡単に言えば、Parse値が有効であることが確実な場合に使用します。それ以外の場合は使用してTryParseください。
文字列を整数に変換できない場合は、
int.Parse()例外をスローしますint.TryParse()false を返します (例外はスローしません)文字列から指定されたデータ型への変換が失敗した場合、Parse は例外をスローしますが、TryParse は明示的に例外のスローを回避します。
TryParse メソッドを使用すると、何かが解析可能かどうかをテストできます。無効な int を使用して最初のインスタンスのように Parse を試行すると、TryParse で例外が発生し、解析が成功したかどうかを知らせるブール値が返されます。
脚注として、ほとんどの TryParse メソッドに null を渡すと、例外がスローされます。
TryParse は値を返しません。解析が成功したかどうかを示すステータス コードを返します (例外はスローしません)。
記録のために、私は 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
遅くて辛いのは嫌だけど、デバッグの例外が解決しないとコードが止まらない。
非常に古い投稿であることは承知していますが、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("-"); double.TryParse("-", out parsed); 中に例外が発生します。は 0 に解析されるので、TryParse はより複雑な変換を行うと思います。