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

C#:在使用getter/setter shortand时,是否可以混合使用函数访问修饰符?,c#,access-modifiers,accessor,C#,Access Modifiers,Accessor,看看WCF教程,有一个类包含私有变量声明和这些声明的公共getter和setter。是否可以使用shortandget和set声明使用相同的修饰符组合(即具有公开访问器的私有变量) 例如: public class MyClass{ private int someNumber; public int someNumber { get {return someNumber;} set {someNumber = value;} } } 此问题建议您可以像这样混合修

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

例如:

public class MyClass{
  private int someNumber;

  public int someNumber {
    get {return someNumber;}
    set {someNumber = value;}
  }
}
此问题建议您可以像这样混合修改器:

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

对吗?(同样,在这个特定的例子中,我看不到将
int someNumber
标记为私有变量的意义。这是无意义的吗?

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

public int someNumber { get; private set; }
这就是创建外部只读属性的方式

这不起作用(编译器会抱怨),也没有什么意义:

private int someNumber { get; public set; }

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

public int someNumber { get; private set; }
这就是创建外部只读属性的方式

这不起作用(编译器会抱怨),也没有什么意义:

private int someNumber { get; public set; }

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

例如,您可以拥有:

public string MyProperty { get; internal set; }
但你不能有:

private string MyProperty { public get; set; }

因为getter的public-access修饰符比属性上的private-access修饰符更可见。

您可以有不同的可见性级别,但您应该始终从限制性更强的级别转到开放性更强的级别

例如,您可以拥有:

public string MyProperty { get; internal set; }
但你不能有:

private string MyProperty { public get; set; }

因为getter的public access修饰符比property上的private access修饰符更可见。

为什么不试试呢?在将访问修饰符应用于单个访问器时,您只能与property access修饰符相比限制访问。换句话说,您可以将属性设置为公共,将访问器设置为私有。然而,用属性修饰符和两个访问器上的修饰符声明它的方式到底有什么意义?实际上,您的属性将是公共的(这就是为什么编译器禁止您将访问修饰符应用于两者,它将只允许它应用于getter或setter)。为什么不简单地尝试一下呢?在将访问修饰符应用于单个访问器时,您只能限制与属性访问修饰符相比的访问权限。换句话说,您可以将属性设置为公共,将访问器设置为私有。然而,用属性修饰符和两个访问器上的修饰符声明它的方式到底有什么意义?实际上,您的属性将是公共的(这就是为什么编译器禁止您将访问修饰符应用于两者,它只允许它应用于getter或setter)。您不能为两个访问器指定访问修饰符。您不能为两个访问器都指定访问修饰符。