Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#重载引用旧值的隐式转换_C#_Type Conversion_Operator Overloading_Implicit Conversion - Fatal编程技术网

C#重载引用旧值的隐式转换

C#重载引用旧值的隐式转换,c#,type-conversion,operator-overloading,implicit-conversion,C#,Type Conversion,Operator Overloading,Implicit Conversion,尽管我很确定我的问题可能没有解决办法,但我还是想尝试一下,并征求你们的意见 假设我有一个简单的类,比如 public class MyIntContainer { public int myIntValue; public bool randomOtherValue; public MyIntContainer(int value) { myIntValue = value; } } 现在我想简单地如下分配变量: MyIntContainer con

尽管我很确定我的问题可能没有解决办法,但我还是想尝试一下,并征求你们的意见

假设我有一个简单的类,比如

public class MyIntContainer
{
   public int myIntValue;
   public bool randomOtherValue;

   public MyIntContainer(int value)
   {
      myIntValue = value;
   }
}
现在我想简单地如下分配变量:

MyIntContainer container = 10;
MyIntContainer container = new MyIntContainer(10);
container.randomOtherValue = true;
container = 20;
因此,最简单的方法是向我的类中添加一个隐式转换运算符,如下所示

public static implicit operator MyIntContainer(int value)
{
   return new MyIntContainer(value);
}
问题是:我想保留randomOther值,如果有的话。 所以如果我做这样的事情:

MyIntContainer container = 10;
MyIntContainer container = new MyIntContainer(10);
container.randomOtherValue = true;
container = 20;
我希望最新的容器变量具有myIntValue=20和randomOtherValue=true; 我似乎找不到任何方法来做这件事。只要我们能以任何方式使赋值运算符过载,这样的事情就有可能发生。我甚至想过给隐式操作符方法一个额外的“this MyIntContainer”参数,它可以引用赋值操作符之前声明的变量。但显然,这些都不起作用。 模仿这种行为有什么好办法吗


提前感谢,hline

赋值运算符将值与旧值组合是没有意义的,这不是该符号的含义

但是,您可以重载
|
(逻辑OR),这可能表示值的组合(例如
0x10 | 0x01
=
0x11

测试:

输出:

20 true

是的,我明白你在赋值运算符上的意思。我现在面临的问题是,我想为int之类的东西提供一个“替代”类型。我想在赋值中保留的其他值由某种GUI处理。另一个用户应该能够像使用整数一样使用我的自定义类,这可以通过双向隐式转换实现。但是,是的,然后其他的值丢失了,这对GUI-tho非常重要。我自己一直使用|=没有问题,但其他用户可能有问题。这是一个非常可靠的选择,谢谢!