nie*_*lsv 1 c# asp.net variables asp.net-mvc
在我的控制器中的索引操作中,我有:
public ActionResult Index(string sortOrder)
{
var model;
ViewBag.CitySortParm = String.IsNullOrEmpty(sortOrder) ? "City_desc" : "";
switch (sortOrder)
{
case "City_desc":
model = this.UnitOfWork.AddressRepository.Get().OrderBy(a => a.City);
break;
}
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,我总是得到错误: Implicitly-typed local variables must be initialized
为什么这不起作用,我该如何解决这个问题呢?
为什么这不起作用
两个原因:
var而不指定初始值.你不能这样做 - 编译器无法推断出类型.model当它可能没有被初始化时,你试图从变量中读取- 如果sortOrder 不是 City_desc你期望返回的那个?那种类型是什么?我该如何解决这个问题?
这取决于你想要发生什么,如果sortOrder不是City_desc.计算出你想要返回的价值,并确保它已被退回.
基本上,你无法从局部变量读取,直到它被明确赋值 - 换句话说,直到编译器可以证明(通过C#的规则),当你到达那里时,它将被分配一个值.
在隐式类型方面 - 您是否总是在视图中使用相同的类型?如果是这样,只需明确声明类型model,以及修复明确的赋值部分.如果没有,我会考虑回国内的switch/ case声明-我不认为你的model局部变量实际上是帮助你多少.
| 归档时间: |
|
| 查看次数: |
970 次 |
| 最近记录: |