C#:使用 getter/setter shortand 时可以混合使用函数访问修饰符吗?
C#: Can you mix function access modifiers when using getter/setter shortand?
查看 WCF 教程,有一个 class 带有私有变量声明和 public 这些声明的 getter 和 setter。是否可以使用简写 get
和 set
声明来获得相同的修饰符组合(即带有 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 访问修饰符比 属性 上的私有访问修饰符更明显。
查看 WCF 教程,有一个 class 带有私有变量声明和 public 这些声明的 getter 和 setter。是否可以使用简写 get
和 set
声明来获得相同的修饰符组合(即带有 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 访问修饰符比 属性 上的私有访问修饰符更明显。