c# - 何时使用 var 何时使用强类型?

标签 c# asp.net asp.net-mvc asp.net-mvc-3

<分区>

我有如下类。

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 方法中,我在实例化此类时有以下两个选项。

方法一

var d = new Models.Dropdown();

方法二

Models.Dropdown d = new Models.Dropdown();

两者都显示相同数量的方法/属性/数据成员等。我还听说建议使用方法 1

问题

使用方法 1 我的假设是否正确?

最佳答案

var 关键字是允许隐式类型声明的编译器功能 - 我会选择使用 var 纯粹是因为它更短。

人们可能会说使用 var 会失去可读性,然而,是什么让

MyClass myobj = new MyClass()

更具可读性
var myobj = new MyClass()

我确实认为使用显式类型有意义的唯一场景是在声明接口(interface)类型时,即

IMyInterface myobj = new MyClass()

或类型转换

MyBaseClass myObj = new MyClass()

话又说回来,你也可以争论这些情况,因为相同的代码在功能上是等价的

var myObj = (IMyInterface)new MyClass()
var myObj = (MyBaseClass)new MyClass()

一般来说,我很少看到需要显式定义类型,因为它是由实例化类型推断出来的。

关于c# - 何时使用 var 何时使用强类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16881801/

相关文章:

c# - web.config文件的编译

c# - Controller 未收到英国格式的 MVC3 日期

c# - 如何将多态引入实体数据模型

c# - 方法 : params string[] with one parameter and single string

javascript - 页面和母版页中的 pageLoad 函数

c# - 将数据传递到我的 View 时出错?

c# - MVC4 自定义表单例份验证 - 无法将 System.Web.HttpContext.Current.User 转换为 CustomPrincipal

c# - 错误将变量设置为 char 数组/字符串中的特定字符到 char[] 数组到字符串 [] 数组到字符串

C# - 通过串行端口从设备获取所有数据并检测控制字符(ACK、SOH、...)

c# - 如何确定网站管理员?