我在 C# 类中有这样的私有(private)成员变量:
class foo{
private byte bar;
}
我想像这样制作两个(或更多)setter/getter:
class foo{
private byte bar;
public int Bar{
get{return (int)bar;}
set{bar=(byte)bar;}
}
public string Bar{
get{return "Nothing";}
set{bar=0;}
}
}
这可能吗?或任何其他等效模式?
最佳答案
从技术上讲,您可以通过隐式运算符模仿这样的行为:
public struct Bar {
internal Bar(Byte value) {
Value = value;
}
internal Bar(String value) {
if (String.Equals(value, "Nothing", StringComparison.OrdinalIgnoreCase))
Value = 0;
else
Value = Byte.Parse(value);
}
public Byte Value {
get;
private set;
}
public override string ToString() {
return Value == 0 ? "Nothing" : Value.ToString();
}
public static implicit operator Byte (Bar value) {
return value.Value;
}
public static implicit operator String(Bar value) {
return value.ToString();
}
public static implicit operator Bar(Byte value) {
return new Bar(value);
}
public static implicit operator Bar(String value) {
return new Bar(value);
}
}
class Foo {
private Bar m_Bar;
public Bar Bar {
get {
return m_Bar;
}
set {
m_Bar = value;
}
}
}
现在,让我们玩得开心:
Foo foo = new Foo();
foo.Bar = 123;
foo.Bar = "Nothing";
String test = foo.Bar;
Byte testByte = foo.Bar;
但是,即使您可以这样做,您最好不要这样做,而只是声明两个具有不同名称的属性。
关于c# - 同一个成员变量的两个setter/getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35316450/