【发布时间】:2019-12-20 23:03:37
【问题描述】:
即使我很确定我的问题可能没有解决方案,但我仍然想尝试一下,并向你们寻求建议。
假设我有一个简单的类
public class MyIntContainer
{
public int myIntValue;
public bool randomOtherValue;
public MyIntContainer(int value)
{
myIntValue = value;
}
}
现在我想像这样简单地分配我的变量:
MyIntContainer container = 10;
所以最简单的方法是像这样在我的类中添加一个隐式转换运算符
public static implicit operator MyIntContainer(int value)
{
return new MyIntContainer(value);
}
问题是:我想保留 randomOtherValue,如果有的话。 所以如果我做这样的事情:
MyIntContainer container = new MyIntContainer(10);
container.randomOtherValue = true;
container = 20;
我希望最新的容器变量具有 myIntValue = 20 和 randomOtherValue = true; 我似乎无法找到任何方法来做到这一点。如果我们能以任何方式重载赋值运算符,这样的事情就有可能发生。我什至考虑给隐式运算符方法一个额外的“this MyIntContainer container”参数,它可以引用赋值运算符之前声明的变量。但显然这些都不起作用。 有什么好的技巧可以模仿这种行为吗?
提前致谢,问候 BOTHLine
【问题讨论】:
标签: c# type-conversion operator-overloading implicit-conversion