为什么静态关键字在函数签名之前

Sun*_*nil 5 c#

可能重复:
为什么C#操作符重载必须是静态的?

为什么静态关键字在C#中所有重载运算符的函数签名之前如下:

public static void operator =(Object a,Object b)

当我们做a = b时; 然后一个值将被隐式传递.所以不需要static关键字.它必须像:

public void operator =(对象b)

是吗?

Jon*_*eet 9

运算符是静态的这一事实允许它们在具有空值的情况下使用.它还强调了运算符不是多态应用的事实.(如果它们不是静态的话,它们可能被多态地应用,不可否认......但是无论如何,压倒一切都是一个坏主意.)

(请注意,无论如何都不能在C#中重载赋值运算符.)