Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在默认get'中注入额外的内容;ters和set';物业登记册_C# - Fatal编程技术网

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。@乔治:不,这并不能使它真正成为只读的。它不会阻止它被设置在构造函数之外,也不会使底层字段成为只读的,这正是我想要的。