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を使用しています。
編集:正しいコードが添付されました。