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

时间:2010-02-23 10:59:17

标签: c#

  

可能重复:
  Why must C# operator overloads be static?

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

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

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

public void operator =(Object b)

是吗?

2 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:0)

否则,您总是需要Object的实例来执行该操作。在案例a或b中你可能没有的是null。