わかっています...わかっています...パフォーマンスはここでの主な関心事ではありませんが、好奇心のために、何が優れているのでしょうか?
bool parsed = int.TryParse(string, out num);
if (parsed)
...
また
try {
int.Parse(string);
}
catch () {
do something...
}
わかっています...わかっています...パフォーマンスはここでの主な関心事ではありませんが、好奇心のために、何が優れているのでしょうか?
bool parsed = int.TryParse(string, out num);
if (parsed)
...
また
try {
int.Parse(string);
}
catch () {
do something...
}
より良いは非常に主観的です。たとえば、私は個人的にはint.TryParse
を好む. ただし、 (ドキュメントint.Parse
によると) 3 つの異なる例外をスローできます。
失敗する理由が気になる場合は、int.Parse
明らかにより良い選択です。
いつものように、コンテキストが王様です。
変換が時々失敗するのは例外的なことですか、それとも変換が時々失敗することは予期された正常なことですか? 前者の場合は、例外を使用します。後者の場合は、例外を避けてください。例外は、理由から「例外」と呼ばれます。例外的な状況に対処するためにのみ使用してください。
変換が時々失敗することが実際に予想される場合は、次のように、条件付き (三項) 演算子int.TryParse
を使用して 1 行できちんと使用するのが好きです。
int myInt = int.TryParse(myString, out myInt) ? myInt : 0;
この場合、TryParse メソッドが失敗すると、ゼロがデフォルト値として使用されます。
null
また、変換が失敗した場合にデフォルト値を上書きする null 許容型にも非常に役立ちます。
最初。2 つ目は、例外によるコーディングと見なされます。
個人的には、次のことをお勧めします。
if (int.TryParse(string, out num))
{
...
}
最初!例外によってコーディングしないでください。
あなたはそれを短くすることができます
if (int.TryParse(string, out num))
まず、ずっと。ジョージが言ったように、2 つ目は例外によるコーディングであり、パフォーマンスに大きな影響を与えます。そして、常にパフォーマンスを気にする必要があります。
例外をキャッチするとオーバーヘッドが増えるため、TryParse を使用します。
さらに、TryParse メソッドは、変換が失敗しても例外をスローしません。s が無効で正常に解析できない場合に、例外処理を使用して FormatException をテストする必要がなくなります。
最後の部分はここからコピペ
他に覚えておくべきことは、例外がVisual Studioのデバッグ/出力ウィンドウに(オプションで)ログに記録されることです。例外のパフォーマンスオーバーヘッドが重要でない場合でも、デバッグ時に例外ごとに1行のテキストを書き込むと、処理速度が低下する可能性があります。さらに注目すべき例外は、失敗した整数解析操作のすべてのノイズの中で溺れる可能性があります。