Resharper を入手して以来、私は可能な限りメソッド内で var を使用するのが好きです。したがって、後で別の型を渡すと、すべての int 宣言を double に変更することなく、変更がコードにカスケードされます。それが私の質問につながります。DataList から DataListItems のリストを取得しています
var daysWorked = dlResourcesAllocated.Items;
次に、返されるリストをステップスルーします
foreach (var d in daysWorked)
{
var c = d.FindControl("ucSomethingSomething"); //Doesn't compile d has no methods
}
そして、私の d は突然、メソッドを持たないオブジェクトにキャストされます
foreach (DataListItem d in daysWorked)
{
var c = d.FindControl("ucSomethingSomething");
}
ただし、問題なく動作します。
「var」がそれが DataListItem のコレクションであることを理解できないのはなぜですか。インテリセンスはそれを知っているようです。これについては、完全に単純なワンライナーの説明があると確信しています。スキートの男がおそらく現れて、C# を深く読むときはもっと注意を払うべきだったと指摘するでしょう...