C#中的过载除法

时间:2014-12-23 17:58:23

标签: c# overloading

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

public string[] operator/ (object obj) {

}

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

//我在Ubuntu 14.10上使用MonoDevelop,如果需要的话。

2 个答案:

答案 0 :(得分:6)

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

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

例如:

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);
    }
}

答案 1 :(得分:2)

/运算符是一个“二元”运算符,这意味着它需要两个参数:a / b。你写这个的方式,它试图将它作为“一元”运算符重载,例如a++

这样的事情应该有效,假设你的课被称为“MyObject”。

public static string[] operator/ (MyObject mine, object obj) {
    ...
}

用法:

object something = "hi";
string[] result = new MyObject(1) / something;