c#中的访问者行为是值得怀疑的

A.T*_*.T. 0 c# asp.net-mvc field properties

是声明

public string FirstName;
Run Code Online (Sandbox Code Playgroud)

相当于

public string FirstName { get; set;}
Run Code Online (Sandbox Code Playgroud)

我相信没有区别,但我发现了以下内容:当我创建一个模型时 - 就像这样

public class Subject
{
    public string SubjectName;// { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后在MVC中使用表单发布此对象,我得到了SubjectName价值null.但是,如果我删除注释的访问器,那么我得到一个值.这种行为有什么理由吗?

Ser*_*kiy 5

它不是等效的代码.有很大的区别 - 没有访问者你有公共领域,访问者你有自动实现的属性.MVC,WPF,Entitiy Framework等需要属性(在MVC默认模型绑定器中仅适用于属性).查看属性与字段 - 为什么重要?