Parse() と TryParse() の違いは何ですか?
int number = int.Parse(textBoxNumber.Text);
// The Try-Parse Method
int.TryParse(textBoxNumber.Text, out number);
Try-Catch ブロックのような形式のエラー チェックはありますか?
Parse
値を解析できない場合は例外をスローしますが、成功したかどうかを示す をTryParse
返します。bool
TryParse
try
/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 はより複雑な変換を行うと思います。