鉴于下面的代码块(来源:http://www.asp.net/learn/mvc/tutorial-31-cs.aspx)...我收到此错误:使用泛型类型'System.Collections.Generic.List'需要'1'类型参数
我可以通过简单地将我的声明修改为:var groups = new List<string>();
来解决这个问题。这只是示例代码中无效语法的情况吗?但是,我问这里,因为我不止一次遇到这个问题,并且想知道是否有某种VS.NET“严格性设置”可能在我的VS环境中起作用。
public class GroupController : Controller
{
public ActionResult Index()
{
var groups = new List();
return View(groups);
}
/// another example...
Assert.IsInstanceOfType(result.ViewData.Model, typeof(IEnumerable)); // same error
Assert.IsInstanceOfType(result.ViewData.Model, typeof(IEnumerable<string>)); // corrected
}
答案 0 :(得分:1)
链接网页中出现错误。如果查看HTML源代码,可以看到泛型类型参数有一个参数:
namespace ContactManager.Controllers
{
public class GroupController : Controller
{
public ActionResult Index()
{
var groups = new List<Group>();
return View(groups);
}
}
}
同样适用于上面的例子(或者,在你的问题中,下面):
// Assert
Assert.IsInstanceOfType(result.ViewData.Model, typeof(IEnumerable<Group>));
答案 1 :(得分:1)
是的,这似乎是示例代码呈现为HTML
的方式中的错误答案 2 :(得分:1)
是的,这是示例代码中呈现的无效语法。
增加混淆的一点是在代码中使用IEnumerable
和IEnumerable<string>
。这没关系,因为IEnumerable
和IEnumerable<T>
不同类型。第一个是非通用的,第二个是通用的。
将其与List<T>
进行比较 - 没有非通用List
类型。 (最接近的等价物是ArrayList
。)