gpt4 book ai didi

c# - 同一个成员变量的两个setter/getter

转载 作者:行者123 更新时间:2023-11-30 20:20:49 25 4
gpt4 key购买 nike

我在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com