.Netでは、<datatype>.parse
またはConvert.To<DataType>
のいずれかを使用して、文字列値を別のデータ型に読み取ることができます。.Net解析と変換
私はパース対コンバートの基本に精通していないので、どの方が良い/より速い/より適切かを尋ねると、私はいつも迷っています。
どのような状況でどのように最適ですか?
.Netでは、<datatype>.parse
またはConvert.To<DataType>
のいずれかを使用して、文字列値を別のデータ型に読み取ることができます。.Net解析と変換
私はパース対コンバートの基本に精通していないので、どの方が良い/より速い/より適切かを尋ねると、私はいつも迷っています。
どのような状況でどのように最適ですか?
Convert.ToXXX()
の方法は、正しいまたは同様のタイプであるかもしれないオブジェクトに対して、次のとおりです。
//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を使用しています。
また、オブジェクトの種類がわかっている場合にのみ使用するDirectCastメソッドもあります。速いですが、適切なチェックは行いません。私は、各列の型を知っているときに、緩やかに型付けされたDataTableから値を抽出するときに、DirectCastを使用します。
スピードが必要な場合は、直接キャストが最速の方法であることは間違いありません。つまり、私は通常、.Parseまたは.TryParseを使用します。これは、読みやすくするために、より予測可能な方法で動作するように思われるからです。
実際にConvertはフードの下でParseを呼び出します。だからそこにはほとんど違いはなく、実際には個人的な好みの問題だと思われます。 .Parse()
と.TryParse()
が文字列のために特別にしている間
私はTryParseの大きなファンです。あなたが解析しようとしている値が適切なタイプでない可能性があるときに、エラーをキャッチする頭痛をたくさん覚えています。
私の順番は通常、次のとおりです。