繁体   English   中英

C#中的属性获取器设置器

[英]Property getter setter in C#

我有一个班级图书馆项目。 我在下面有一个物业。 这不是只读属性

 private   Int32 ABC  ;
public Int32   ABCD
        {
            set
            {
                this.ABC = value;
            }
            get
            {
                return this.ABC;
            }
        }

我的问题是,是否有必要为getter / setter和setter声明私有变量?

编辑

我的意思是像下面吗?

public Int32 ABCD {}

自动属性声明需要get; set; get; set; 花括号中的语句(这是您在原始问题中的意思):

public Int32 ABCD { get; set; }

空的属性块无效。

使用C#3.0(VS 2008)或更高版本中引入的自动实现的属性。
http://msdn.microsoft.com/zh-CN/library/bb384054.aspx

public Int32 Abcd {get;set;}

编译器会为您创建后备字段。 但是,它是匿名的,无法访问。 如果以后发现需要访问支持字段,则可以显式声明它,并使用该字段重新实现getter和setter而不破坏接口。

使用自动执行的属性,从2008年开始进行干预:

    public Int   ABCD
    {
        set;
        get;
    }

但是区别是默认值,即,在具有后备字段的属性中,您可以在变量中设置默认值,但在这种情况下,默认值为.net默认值。 (实际上,您应该在构造函数中将其初始化为默认值)。

如果您选择第二个,C#将为您创建第一个。

是否需要为getter / setter和setter声明相同的私有变量?

如果您的意思是有必要使用私有变量 ,那么是的(除非您使用BoltClock提到的自动方法)。您应该记住,这是一个完整的代码块,因此您可以做任何您想做的事情在那里-尽管您应该在合理的范围内进行操作,因为您不希望任何事情会减慢对属性的访问。

例如,更改属性可能会有副作用,即,可能必须更新另一个属性,或者您可能必须通知其他属性也已更改。

如果您没有通知或做任何其他事情,那么自动getter / setter方法的开发速度会更快(但这并不是说它是执行最快(或最慢)的方法)。

你可以这样

public string ABCD { get;set;}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM