我想在我的C#类中重载除法运算符。所以,我写道:
public string[] operator/ (object obj) {
}
得到错误:“解析器错误:超载一元运算符除外”。
那么,我不能超载那个操作员?
在MSDN上,我没有看到任何示例:http://msdn.microsoft.com/en-us/library/3b1ff23f.aspx
感谢。
//我在Ubuntu 14.10上使用MonoDevelop,如果需要的话。
答案 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;