私人套装或私人会员?

Lin*_*ron 22 c#

我想知道什么被认为是C#最佳实践,私人/受保护的成员与公共吸气者,或公共吸气者与私人/受保护的制定者?

       public int PublicGetPrivateSetter
       {
            get;
            private set;
        }
Run Code Online (Sandbox Code Playgroud)
        private int _privateMember;

        public int PublicGetPrivateMember
        {
            get { return _privateMember; }
        }
Run Code Online (Sandbox Code Playgroud)

我觉得在你的代码中使用私有成员更明确它是一个私有的setter(使用命名约定).另一方面,使用私有setter可以选择使用虚拟(受保护),编写更少的代码,减少错误的空间,并且如果需要,可以为您提供添加副作用的选项.

我找不到什么被认为是最佳实践,或者即使一个被认为比另一个更好.从我所看到的通常80%的时间(从我看到的代码)人们不使用私人制定者...我不确定这是因为人们不知道私人制定者,或者因为它是被认为更好地实际使用私人会员.

编辑:

实际上,我在使用私有成员时忘记的其他好处是默认值和readonly的使用.

Mar*_*ers 33

我更喜欢使用自动实现的属性,除非默认实现没有做我想要的.所以在这种情况下,由于自动实现的属性可以满足您的需求,只需使用:

public int Foo { get; private set; }
Run Code Online (Sandbox Code Playgroud)

但是另一种情况是,如果要创建字段readonly(意味着可以在构造函数中设置字段的唯一位置).然后,您需要定义支持字段并将其标记为只读,因为自动实现的属性不支持:

private readonly int foo;

public int Foo
{
    get { return foo; }
}
Run Code Online (Sandbox Code Playgroud)