【发布时间】:2018-06-01 05:44:56
【问题描述】:
在将隐式转换从 int 重载到 A 时,有没有办法获得操作左侧的实例?
像这样:
public class A
{
int myInt;
public static implicit operator A(int x)
{
a.myInt = x;
}
}
然后
A myA = new A();
myA = 2;
所以myA.myInt 是2
我在互联网上进行了搜索,但找不到这个确切问题的答案。我认为这是不可能的,因为它是一个静态函数,如果您尝试将两个参数放入函数中,它会引发错误。另外,如果您尝试对空变量执行此操作,我可以看到这会给您一个错误(就像我已经像这样声明它A myA;)。但是你可以在结构中做到这一点(因为据我所知,结构不能为空 - 或者不能分配为空 - 如果我错了,请纠正我)。
我只是想知道是否有某种魔法可以让我完成这样的工作。
【问题讨论】:
-
这就像说当我做
(MyDestType)myExpr时应该引用“the”MyDestType。但是在演员阵容发生之前没有MyDestType。在您的转换运算符主体中,首先创建一个实例作为局部变量。然后你可以根据需要修改它,最后返回它。您上面的内容不是合法的 C#。 -
如果我重载了 = 运算符怎么办?有没有办法获得对操作左侧的引用?
-
@ItsaMeTuni 你不能重载那个操作符。
标签: c# operators implicit-conversion