小野さんのC#ではじめるプログラミング入門第5回にて、Parse()メソッドによるstringからintへの型変換の方法が説明されていますが、.Net Frameworkでは型変換のこれ以外の方法として、Convertクラスの変換用メソッドも用意されています。また、キャストによる型変換も用意されています。(ただしstring型から数値型、またその逆は行えません。)
[Exp. 一部小野さんのコードを借用]
string s1 = “10”;
int i1, i2;
i1 = System.Int32.Parse(s1);
System.Console.WriteLine(i1);
i2 = System.Convert.ToInt32(s1);
//これは許されない
//i2 = (int)s1;
System.Console.WriteLine(i2);
ここで疑問なのは、Parseメソッドを使う場合と,System.Convert.ToInt32メソッドを使う場合とではどちらがコストが低いのか、もしくは同じなのかという疑問です。
ただ、引数や、実際の動作を考えると元は同じかなともいますが。
コメント
あ、記事中でははぶいちゃったかな?
SSCLIの実装みると、Convert.ToInt32の中でParseを呼んでます。
なので、Parseのほうがちょっとだけコストが低いかな、という感じです。
ただ、空文字を渡したときだったかの処理がConvert.ToInt32のほうに入っているので、一点だけ処理結果が異なってるという点に注意が必要です。
書き込みありがとうございます。
あーConvertはParseを読んでるのですか。逆か、共通のCLRのタスクを呼び出している物と思っていました。
基本的にはParseを使っていた方が良さそうですね。
実はドキュメントの読み方によっては、Parseを読んでるらしいことがわかったりして。
「戻り値は、value に対して Int32.Parse メソッドを呼び出した結果得られる値です。」
でも、一点だけ動きが違うことには触れられてないんですよね。。。