<datatype>.parse
.Netでは、またはを使用して文字列値を別のデータ型に読み込むことができますConvert.To<DataType>
。
私は解析と変換の基本に精通していないので、どちらがより良い/より速い/より適切であるかを尋ねられたとき、私はいつも途方に暮れています。
では、どのような状況でどちらの方法が最適ですか?
メソッドは、正しいタイプまたは類似のタイプでConvert.ToXXX()
ある可能性のあるオブジェクト用ですが、特に文字列用です。.Parse()
.TryParse()
//o is actually a boxed int
object o = 12345;
//unboxes it
int castVal = (int) 12345;
//o is a boxed enum
object o = MyEnum.ValueA;
//this will get the underlying int of ValueA
int convVal = Convert.ToInt32( o );
//now we have a string
string s = "12345";
//this will throw an exception if s can't be parsed
int parseVal = int.Parse( s );
//alternatively:
int tryVal;
if( int.TryParse( s, out tryVal ) ) {
//do something with tryVal
}
最適化フラグを使用してコンパイルする場合、TryParseは非常に高速です。これは、文字列から数値を取得するための最良の方法です。ただし、intまたは文字列である可能性のあるオブジェクトがある場合は、Convert.ToInt32の方が高速です。
これがあなたへの答えです:
http://www.dotnetspider.com/forum/ViewForum.aspx?ForumId=77428
.NETの最新バージョンでは、変換が機能することに疑いがある場合は、どのような場合でもTryParseを使用するのが最善の方法だと思います。
私はTryParseの大ファンです。これは、解析しようとしている値が適切なタイプでない可能性がある場合に、エラーをキャッチするという頭痛の種を大幅に軽減するためです。
私の注文は通常:
オブジェクトのタイプが確実である場合にのみ使用する必要があるDirectCastメソッドもあります。高速ですが、適切なチェックは行われません。各列の型がわかっているときに、緩く型付けされたDataTableから値を抽出するときに、DirectCastを使用します。
スピードが必要な場合は、ダイレクトキャストが最速の方法だと確信しています。そうは言っても、私は通常.Parseまたは.TryParseを使用します。これは、読みやすく、より予測可能な方法で動作するように見えるためです。
Convertは、実際には内部でParseを呼び出していると思います。ですから、そこにはほとんど違いはなく、それは本当に個人的な好みの問題のようです。