[2.0]文字列で int 型を有効にする
.NET2.0から int.TryParse() が実装されたので、
コストの大きな例外を使わなくても良くなった。
従来のコード
int num=0;
try{
num=int.Parse(str);
// code for success
}catch(FormatException){
// code for failure
}
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| | #spanend
#spanadd
int num=0;
#spanend
#spanadd
try{
#spanend
num=int.Parse(str);
#spanadd
}catch(FormatException){
#spanend
#spanadd
}
#spanend
#spanadd
|
.NET2.0からのコード
int num=0;
int val;
bool result=int.TryParse(str,out val)
if(result){
num=val;
// code for success
}else{
// code for failure
}
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| | #spanend
#spanadd
int num=0;
#spanend
#spanadd
int val;
#spanend
#spanadd
bool result=int.TryParse(str,out val)
#spanend
#spanadd
if(result){
#spanend
num=val;
#spanadd
}else{
#spanend
#spanadd
}
#spanend
#spanadd
|
補足
int.TryParse() は、変換に失敗すると渡されたintに 0を格納する。
よって、失敗したら0に初期化する場合は if 文の必要はない。
- クラス・ライブラリのメソッド引数でout指定させるって珍しいよね。out使うと必ずFxCopに怒られるけど、そこんトコどうなんだろう? -- Musi_chan
- 確かに珍しいかも。でもまあ、atoiみたく、out使わずにint返す(失敗時0)よりは理にかなってるんでせう。 -- 浮子屋