Do I need to use { get; set; } with c# fields that have no special actions when getting and setting
我一直在编写这样的类代码:
1 2 3 4 5 6 7 8 | public class ReportViewModel { public string Status; public string DataSource; public String DataStore { get; set; } public PageMeta PageMeta { get; set; } public ICollection<Question> List { get; set; } } |
请注意,大多数字段都使用get;set;,除了我让Visual Studio为我添加的前两个字段。
我想知道的是,我是否真的需要使用get;set;。在我看来,VS2010不会自动添加这个,所以我需要它吗?
您已经创建了一个具有两个公共字段(
与公共字段相比,使用属性有很多优点,但我认为主要的一点是属性在逻辑上是类的API的一部分,而字段在逻辑上是实现细节。属性说明调用者可以做什么-字段说明如何存储值。
如果您希望它们作为属性正确地公开,是的。
这完全取决于这个类将如何使用。
如果这在您的代码中,只是在当前产品中使用,那么字段(没有
然而,在这种情况下,它们可能不应该是
如果类将被其他程序集使用,则应始终将公共字段转换为属性。
原因是,如果您希望稍后扩展属性(即向
身为
这是有区别的。前两个是字段,其余的是自动属性。
第二,编译器生成一个私有的支持字段和一些锅炉板的get/set方法。这样,您就可以像访问字段一样访问属性,但只有属性才具有这些优势。
建议始终隐藏属性后面的字段,方法是将它们设为私有并在其周围写入您自己的属性,或者使用自动属性。
物业有一些优势。一种是可以将属性设置为只读,甚至只写,或使用内部只写等设置为只读。因为它们的行为与方法类似,所以可以在其中执行任意代码。当您需要实现诸如
另一个优点是封装。您不是直接将自己绑定到类的字段,而是将自己绑定到属性。因此,如果有关字段的一些细节发生了变化(比如它消失并被计算),那么通过使用属性,您可以将自己与那些实现细节隔离开来。
对于所有情况,您当然应该考虑使用属性(现在添加
如果不添加get和set,则使用的是字段而不是属性。这在很多情况下不会有什么不同。但是,不能像使用属性那样将数据绑定到字段。所以你会输的。
它们是不同的:前两个成员是字段,而不是属性。其他是带有自动实现访问器的属性。
你不必这么做,但这只是一个编码特技,它的优点和缺点。请考虑此链接以获取更多资源:
财产担保人