C#自动属性优缺点分析

  最近在C#的书,常常遇到一些问题,却总是喜欢刨根问底。下面我就来比较一下自动属性的优缺点。

  自动属性可以使你快速的生成一个变量的get/set 方法,在编译的时候会自动生成一个私有变量,并且这个私有的变量在IDE中是看不到的。这样减少了代码的输入,更简洁,而不会过度的降低代码属性的可读性。具体的效果可见.NET 3.x新特性之自动属性及集合初始化这篇文章,对比很鲜明。

  

  优点 缺点
非自动属性  

可以通过私有字段对属性中有些赋值或者取值逻辑校验,

可以对get/set 设置访问级别,可以定义只读或只写

 代码需手动输入
自动属性

无需手动添加私有字段,减少代码输入,更简洁

对象和集合初始化更快捷。

 不能访问私有字段,不能对属性中有些赋值或者取值逻辑校验、

必须包含get/set的存取,无法直接使用这种方式定义只读或只写。

   

  另外,还有一个容易混淆的点。在接口中定义属性可以定义访问块get和set中的哪一个能用于该属性。例如:

    interface IMyInterface
    {
        int MyInt { get; set; }
    }

  其中,MyInt属性有get和set存取器。如果要对访问有更严格的限制,可以省略他们之中的任一个。

  这个语法类似自动属性,但是自动属性是为类(而不是接口)定义的,自动属性必须包括get和set存取器。

  其实,对于程序员来讲,没有绝对的优缺点,只有如何用最快捷的方式完美的实现所需的功能,一切都是因时因地而变,唯一不变的是对速度和完美的追求。我们要用好工具,而不能被工具使用。

原文地址:https://www.cnblogs.com/Dautt/p/2719811.html