繁体   English   中英

C# 中的重载除法

[英]Overload division in C#

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

public string[] operator/ (object obj) {

}

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

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

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

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

例如:

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

/运算符是一个“二元”运算符,这意味着它有两个参数: a / b 按照您的编写方式,它试图将其重载为“一元”运算符,例如a++

假设您的班级名为“MyObject”,这样的事情应该可行。

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

用法:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM