最近,在阅读了很多关于互联网的教程之后,我注意到有些开发人员会跳过在他们的模型类中编写字段而只是使用属性,如下所示:
public class MyClass
{
public string MyProperty { get; private set; }
}
除了编写更少的代码之外,这样做的好处究竟是什么?虽然我确实知道setter是私有的,但是当你没有指定私有字段时,是不是存在某种安全问题?换句话说:这里最好的做法是什么?编写没有字段和相关属性的模型类,或者只使用没有字段的这些公共属性?
提前致谢,
博
答案 0 :(得分:5)
在c#3.0及以上版本中,编译器会将局部变量放入MSIL中。它使代码更易于阅读和更易于维护(更少的变量可以跟踪等)。
应该没有安全问题,因为 内部创建了本地作用域成员变量。
有关详细信息,请参阅Microsoft's documentation。
答案 1 :(得分:1)
如果您没有对变量进行任何操作,只需设置它们并按原样读取它们,那么为什么要添加额外的代码来创建私有变量并执行完整的setter和getter?
C#将创建私有变量,因此字节代码仍然正确,但是对于那些阅读程序的人来说,更容易理解正在发生的事情。
任何时候你都可以让代码更容易阅读,即使编译器中有语法糖,也是一个胜利。
但是,如果您必须执行任何操作,例如检查属性是否在某个范围内,那么在C#3中,您仍然需要自己编写其他所有内容。
最佳做法是在问题中写下它。