在C#中使用new <object>(){}和new <object> {}实例化对象的区别

时间:2017-03-01 07:05:27

标签: c# asp.net-mvc oop

在C#中实例化类时,我有点困惑。 这是我通常做的事情

在模特:

public class ModelView
{
    public string inputfield1 { get; set; }
    public string inputfield2 { get; set; }
    public List<DataGrid1> Grids { get; set; }

}

public class DataGrid1
{
    public string row1 { get; set; }
    public string row2 { get; set; }
    public string row3 { get; set; }
}

在控制器中:

public ActionResult Index()
{
    ModelView result = new ModelView //this is where I confused
    {
        inputfield1 = " ",
        inputfield2 = " ",
        Grids = new List<DataGrid1>()
    };
    return View(result);
}

在很多例子中,我看到人们这样做:

public ActionResult Index()
{
    ModelView result = new ModelView()
    {
        inputfield1 = " ",
        inputfield2 = " ",
        Grids = new List<DataGrid1>()
    };
    return View(result);
}

我确实尝试了这个,它也有效。我的问题是

使用()之间的区别是什么,而不是在实例化类时?

1 个答案:

答案 0 :(得分:3)

使用内联属性定义对象时,()括号是可选的。这就是为什么这样做的原因

ModelView result = new ModelView()
{
    inputfield1 = " "
};

这也是

ModelView result = new ModelView
{
    inputfield1 = " "
};

但是当内联未定义属性时,括号是强制性的。

ModelView result = new ModelView();
result.inputfield1 = " ";

这不会起作用

 ModelView result = new ModelView;