C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: foreachのvarの型


(過去ログ 120 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■70482 / inTopicNo.1)  foreachのvarの型
  
□投稿者/ fullhappy (15回)-(2014/03/31(Mon) 10:59:53)

分類:[.NET 全般] 

VS2010 or VS2012です。

foreachでvarを使用すると型を推論してくれない場合が
ありますがなぜでしょうか?

以下のプログラムでforeachの変数rowの型は
System.Windows.Forms.DataGridViewRowになってほしいのですが
System.Objectです。
推論できない理由がわかりません。

    System.Windows.Forms.DataGridView dg;

    foreach (var row in dg.Rows)
    {
    }

よろしくお願いします。

引用返信 編集キー/
■70484 / inTopicNo.2)  Re[1]: foreachのvarの型
□投稿者/ shu (517回)-(2014/03/31(Mon) 11:07:14)
No70482 (fullhappy さん) に返信

古くからあるコレクション系のクラスは
その要素にある型ではなくobject型として扱われます。
※IEnumerable,IEnumeratorの実装となっている為

このようなケースでは明示的に型を指定するか
OfType,Castによる型指定のIEnumerable<T>に変換してあげる必要があります。


引用返信 編集キー/
■70488 / inTopicNo.3)  Re[2]: foreachのvarの型
□投稿者/ fullhappy (16回)-(2014/03/31(Mon) 11:57:08)
2014/03/31(Mon) 12:07:01 編集(投稿者)
2014/03/31(Mon) 12:00:25 編集(投稿者)

No70484 (shu さん) に返信

shuさん、早速の回答ありがとうございます。

どっちにしろ教えてあげないといけないですね。
コンパイルエラーになったら、型指定するようにします。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -