代码之家  ›  专栏  ›  技术社区  ›  Marcus L

定义属性的“新”方法是否还有其他好处或缺点?[副本]

  •  0
  • Marcus L  · 技术社区  · 17 年前

    除了较短的代码性能优势、较少的内存使用等,这种“新的”较短的处理属性的方法还有其他好处吗。?

    public string StrVariable { get; set;}
    

    而不是

    private string strVariable;
    
    public string StrVariable
    {
        set
        {
            strVariable = value;
        }
        get
        {
            return strVariable;
        }
    }
    

    较少的 可读性,不那么明确?

    4 回复  |  直到 17 年前
        2
  •  3
  •   Marc Gravell    17 年前

    一大缺点 在特定场景中 -您将失去对字段名的控制。这听起来可能无关紧要,但事实并非如此 is a big problem

    其他事项:

    • 不可能 readonly
    • 对于 struct 你需要打电话给谁 : this()

        3
  •  0
  •   Sean    17 年前

    我可以看到的一个缺点是,如果您想在get/set例程中执行其他操作。递增计数器或类似的东西。如果尚未验证输入,则可能会验证输入。

        4
  •  0
  •   Chad Ruppert    17 年前

    集合属性也是一个问题。它们不是用自动属性初始化的。

    例子:

    public class foo
    {
        public List<String> S1 { get; set; }
    
        private List<string> s = new List<string>();
        public List<String> S2
        {
            get { return s;}
            set { s = value; }
        }
    }
    
    foo f = new foo();
    f.S1.Add("thing");
    f.S2.Add("thing");