【发布时间】:2012-09-19 00:44:50
【问题描述】:
自从获得 Resharper 以来,我一直喜欢尽可能使用 var inside 方法。因此,稍后如果您传入不同的类型,则更改会在您的代码中向下级联,而无需将每个 int 声明更改为双精度。 这让我想到了我的问题。我正在从 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 的集合。 Intellisense 似乎知道这一点。 我敢肯定,对此有一个非常简单的解释。飞碟老兄可能会出现并指出我在深入阅读 C# 时应该更加注意......
【问题讨论】:
-
如果你这样做
var daysWorked = dlResourcesAllocated.Items.Cast<DataListItem>()它会工作,因为它会返回一个通用集合。