C# 在默认get'中注入额外的内容;ters和set';物业登记册
通常,您可以对属性执行以下操作:C# 在默认get'中注入额外的内容;ters和set';物业登记册,c#,C#,通常,您可以对属性执行以下操作: public String s {get; set; } 使用默认的getter和setter创建属性 此外,您可以自己实现这两个功能 但我能不能只“暗示”其中一个,塞特说,去做额外的事情 比如说 public String s { get; set { // some extra code here to happen on any setting of this property } } 看来我不能这样做(不编译),必须引入一个h
public String s {get; set; }
使用默认的getter和setter创建属性
此外,您可以自己实现这两个功能
但我能不能只“暗示”其中一个,塞特说,去做额外的事情
比如说
public String s {
get;
set {
// some extra code here to happen on any setting of this property
}
}
看来我不能这样做(不编译),必须引入一个helper私有变量,并适当地填写get/set代码。有什么想法吗
谢谢 不,您不能-自动实现的属性是“全部或无”;它们只能实现完全琐碎的属性。你需要自己介绍一个领域
(就我个人而言,我并不太在意这一点,但我真的希望能够编写只读的自动属性,这些属性只能从构造函数中设置。)不幸的是,编译器不允许您尝试执行的操作。您可以像这样设置自动属性
public String s { get; private set;}
然后有一个特殊的集合方法
public void SetS(string s)
{
...logic
}
我没有提到……这迫使消费者使用SetS方法,因为setter被标记为private。@乔治:不,这并不能使它真正成为只读的。它不会阻止它被设置在构造函数之外,也不会使底层字段成为只读的,这正是我想要的。