是否可以在c#中重载operator =?
当我调用=时,我只想复制属性,而不是让左手引用来引用另一个实例。
答案 0 :(得分:9)
答案 1 :(得分:2)
您无法重载=
运算符。此外,你想要做的事情将完全改变运算符的语义,换句话说,这是一个坏主意。
如果要提供复制语义,请提供Clone()
方法。
答案 2 :(得分:0)
为什么不在对象中创建.CopyProperties(ByVal yourObject As YourObject)方法?
您使用的是内置对象吗?
答案 3 :(得分:0)
我们可以重载=运算符,但不能直接。
using System;
class Over
{
private int a;
public Over(int a )
{
this.a = a;
}
public int A { get => a; }
public static implicit operator int(Over obj)
{
return obj.A;
}
}
class yo
{
public static void Main()
{
Over over = new Over(10);
int a = over;
}
}
在这里,当您调用该运算符重载方法时,它正在调用=运算符本身将其转换为int。您不能直接重载“ =”,但是这种代码方式是相同的。