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

时间:2017-01-26 11:38:41

标签: c# access-modifiers accessor

查看WCF教程,有一个包含私有变量声明的类,以及用于这些声明的公共getter和setter。是否可以使用短语getset声明来使用相同的修饰符组合(即具有公开公开访问器的私有变量)?

例如:

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标记为私有变量的观点。我是对的,这是没有意义的吗?)

2 个答案:

答案 0 :(得分:3)

您可以,但内部属性方法必须比外部属性本身更具限制性。

public int someNumber { get; private set; }

这是您创建外部只读属性的方式。

这不起作用(编译器会抱怨)并且没有多大意义:

private int someNumber { get; public set; }

答案 1 :(得分:0)

您可以拥有不同的可见性级别,但您应该始终从更严格的角度转变为更开放的角色。

例如,您可以:

public string MyProperty { get; internal set; }

但你不能拥有:

private string MyProperty { public get; set; }

由于getter的公共访问修饰符比属性上的私有访问修饰符更明显。