我的课程如下。
public class Dropdown
{
[Required(ErrorMessage = "Please select state")]
public string StateId { get; set; }
public List<SelectListItem> States
{
get
{
return new List<SelectListItem>()
{
new SelectListItem
{
Text = "State1",
Value = "S1",
Selected = false
},
new SelectListItem
{
Selected = false,
Value = "S2",
Text = "State2"
}
};
}
}
}
在Action Method中,我在实例化这个类时有两个选项。
var d = new Models.Dropdown();
Models.Dropdown d = new Models.Dropdown();
两者都显示相同数量的方法/属性/数据成员等。我还听说建议使用方法1
我的假设是否正确使用方法1?
答案 0 :(得分:4)
var
关键字是允许隐式类型声明的编译器功能 - 我会选择使用var
纯粹因为它更短。
人们可能会说你使用var
失去了可读性,然而,是什么使
MyClass myobj = new MyClass()
比
更具可读性var myobj = new MyClass()
我认为使用显式类型确实有意义的唯一情况是声明接口类型,即。
IMyInterface myobj = new MyClass()
或者施放
MyBaseClass myObj = new MyClass()
然后,您可以再次论证这些情况,因为相同的代码将是功能相同的
var myObj = (IMyInterface)new MyClass()
var myObj = (MyBaseClass)new MyClass()
通常,我很少看到需要显式定义类型,因为它是由实例化类型推断的。
答案 1 :(得分:3)
两者都是等价的,实际上如果你写#1,编译器会把它解析为#2。重要的是你的可读性。
为什么应该避免var只是因为它对可读性有负面影响,因此存在长期争论。我认为应尽可能避免这种情况,但在极端情况下,为表达式编写显式类型可能过于繁琐(只需编写一个复杂的linq表达式,使用灌浆或双重灌浆并尝试记下其类型)。
答案 2 :(得分:1)
除了可读性之外没有区别。
我选择方法1,因为我认为它更具可读性。
答案 3 :(得分:1)