属性是自动实现的对象与没有访问器的对象之间的区别
本文关键字:对象 访问 之间 区别 实现 属性 | 更新日期: 2023-09-27 17:53:34
两个对象,这两个对象的定义有什么区别?这让我困惑了一段时间,因为这个特定的对象被用作MVC控制器动作的参数,当来自视图的值被post时,第一个版本能够将模型绑定到被post回来的值。
//version 1
public class SecurityViewModel
{
public string Identifier { get; set; }
public string CrdId { get; set; }
}
// version 2
public class SecurityViewModel
{
public string Identifier;
public string CrdId;
}
无论使用哪个版本,我都可以使用
SecurityViewModel mymodel = new SecurityViewModel();
mymodel.Identifier = "this";
mymodel.CrdId = "that";
显然,即使没有自动实现的get和set,我仍然可以获取和设置属性的值
然而…版本1有自动实现的属性,版本2只有声明的属性。两者都允许您在创建对象时设置/获取这些属性的值,但是版本1 是唯一一个将与定义为…的控制器方法上的模型绑定一起工作的。
public ActionResult Index(SecurityViewModel myModel)
谁能详细说明一下这个?
MVC绑定到属性。第二个版本:
public class SecurityViewModel
{
public string Identifier;
public string CrdId;
}
使用字段,而不是属性。
参见c#中字段和属性的区别是什么?