C# 属性的主要用途(获取、设置)

C# 属性的主要用途(获取、设置),c#,C#,大家好,我们可以指定一个值或以其他多种方式返回一个值。。所以有时候我们是通过属性(get,set)来实现的。。有谁能告诉我房产的主要用途吗 谢谢 saj属性封装了内部逻辑。它们是公共接口,允许您检查值、应用规则并允许更改内部实现 这与直接暴露内部形成对比 例如: public int myField; // exposes implementation - BAD BAD BAD 更好地实施: private int myField; public int MyField { get {

大家好,我们可以指定一个值或以其他多种方式返回一个值。。所以有时候我们是通过属性(get,set)来实现的。。有谁能告诉我房产的主要用途吗

谢谢
saj属性封装了内部逻辑。它们是公共接口,允许您检查值、应用规则并允许更改内部实现

这与直接暴露内部形成对比

例如:

public int myField; // exposes implementation - BAD BAD BAD
更好地实施:

private int myField;
public int MyField
{
   get {return myField;}
   set {myField = value;}
}
您现在可以更改内部
myField
,而不影响类外的其他代码。您可以向setter、getter等添加逻辑

如果没有任何与成员访问相关联的逻辑,则可以使用自动属性:

public int MyField {get; set;}

编译器将自动生成一个支持字段。

属性提供了获取和设置状态的抽象。也就是说,它们允许您定义获取和设置在实际上下文中的含义。在setter上使用此功能的一个常见示例是在状态更改时通知订阅者。如果公开公共字段,则无法执行此操作

除了封装的优点之外,我们更喜欢使用带有get和set访问器的属性,因为它们提供了清晰实用的语法

语法:

public int Field{ get; set; }
更清楚的是:

private int field;
public int GetField(){
     return field;
}
public void SetField(int field){
     this.field = field;
}

我只想说,在私有字段上使用getter和setter,可以让您更好地控制这些字段。您可能希望仅允许授权实体访问该变量。。因此,您可以在getField方法中进行检查。您可能希望只允许读取值而不更新它们,这样您就可以只有getter而没有setter。因此,基本上通过公开私有字段的方法,您可以对它们进行更多的控制。

嗨,我对这个概念不太熟悉。。你能解释一下吗?我命令你把我的场地作为私人场地。。因此,如果我想从类/范围之外访问。。或者我们能进入吗?这就是重点。它现在没有暴露。您可以使用public property.hi-oded访问它,所以您是说默认属性是public的?有人可能会认为,仅仅通过属性公开私有变量并不会对公开类的内部工作方式产生太大的影响(即使您可能做了一些更棘手的事情)。Get属性可以将状态公开给外部世界,但是通过采用一组完整的参数并以原子和一致的方式更改类内容的方法来更改内容可能会更好。也就是说,我创建了很多setter,因为它们使用起来非常方便。这个答案主要是将属性与字段进行比较,而不是与方法进行比较。我认为,如果我们可以声明一个getter和setter方法(我真的不知道这个问题的答案,它似乎纯粹是美学上的…)@Timwi:我们也可以声明getter和setter方法,但是由于C#支持属性的概念,在我看来这样做有点奇怪。尽管如此,属性的实现方式存在一些明显的缺陷。它们看起来像字段,但有方法语义。