C#中的过载除法

Efo*_*fog 2 c# overloading

我想在我的C#类中重载除法运算符.所以,我写道:

public string[] operator/ (object obj) {

}
Run Code Online (Sandbox Code Playgroud)

并得到错误:"解析器错误:超载一元运算符除外".
那么,我不能超载那个运算符?
在MSDN上,我没有看到任何示例:http://msdn.microsoft.com/en-us/library/3b1ff23f.aspx
谢谢.

//如果需要,我在Ubuntu 14.10上使用MonoDevelop.

Jon*_*eet 7

您可以重载除法运算符,但是:

  • 它必须始终是二元运算符 - 您只提供一个操作数
  • 它必须始终是静态的
  • 至少有一个操作数类型必须是您声明它的类型

例如:

using System;

class Program
{
    public static string operator/ (Program lhs, int rhs)
    {
        return "I'm divided!";
    }

    static void Main(string[] args)
    {
        Console.WriteLine(new Program() / 10);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 将它作为静态还可以让您在可能为null的事物上使用运算符,这很难作为实例方法. (2认同)