C#:使用 getter/setter shortand 时可以混合使用函数访问修饰符吗?

C#: Can you mix function access modifiers when using getter/setter shortand?

查看 WCF 教程,有一个 class 带有私有变量声明和 public 这些声明的 getter 和 setter。是否可以使用简写 getset 声明来获得相同的修饰符组合(即带有 publicly 公开访问器的私有变量)?

例如:

public class MyClass{
  private int someNumber;

  public int someNumber {
    get {return someNumber;}
    set {someNumber = value;}
  }
}

这个问题 here 建议你可以像这样混合修饰符:

public class MyClass{
  private int someNumber {public get; public set;};
}

对吗? (此外,在这个具体示例中,我看不出将 int someNumber 标记为私有变量的意义。我认为这毫无意义吗?)

可以,但是内部 属性 方法必须比外部 属性 本身更严格。

public int someNumber { get; private set; }

这就是你如何制作外部 read-only 属性。

这行不通(编译器会报错)而且没有多大意义:

private int someNumber { get; public set; }

您可以有不同的公开级别,但您应该始终从更严格的级别到更开放的级别。

例如你可以有:

public string MyProperty { get; internal set; }

但你不能:

private string MyProperty { public get; set; }

因为 getter 的 public 访问修饰符比 属性 上的私有访问修饰符更明显。