C# 3.0 でvarキーワードが導入されました。コンパイルすると、コンパイラは適切な型を挿入します。これは、2.0 ランタイムでも動作することを意味します。ここまでは順調ですね。しかし、先日、varキーワードが単にオブジェクトに置き換えられ、十分に具体的でないケースを見つけました。次のようなものがあるとします。
var data = AdoMD.GetData(...); // GetData returns a DataTable
foreach (var row in data.Rows)
{
string blah = (string)row[0]; // it fails since it's of type object
}
行を使用しようとすると、 IntelliSenseとコンパイラの両方がオブジェクト型であると通知します。data.RowsタイプSystem.Data.DataRowCollectionです。以下の作品:
var data = AdoMD.GetData(...); // GetData returns a DataTable
foreach (DataRow row in data.Rows)
{
string blah = (string)row[0]; // works since it now has the right type
}
これは var の使用法に関する質問ではありません。そのためのスレッドがここにあります。
私はVisual Studio 2008 SP1を使用しています。
編集:正しいコードが添付されました。