【问题标题】:How to overload '-' operator to copy strings如何重载'-'运算符来复制字符串
【发布时间】:2016-07-04 09:55:25
【问题描述】:

这里的问题是

编写一个程序来构造一个类“MyString”,它有一个字符串和该字符串的长度作为其数据成员。现在重载 '-' 运算符以将字符串复制到另一个字符串中。

我不明白如何做到这一点..我编写了一个代码,当我尝试在 main 中使用它时显示以下 错误

错误 1 ​​运算符“-”不能应用于“字符串”和“字符串”类型的操作数

我的代码是:

public class MyString
{       
    public string s="SILADITYA";
    //public string this[string s]{ get; set; }

    public static string operator -(string s1, MyString m)
    {
        s1 = String.Copy(m.s);
        return s1;
    }
}
class Program
{
    static void Main(string[] args)
    {
        MyString m = new MyString();

        string s1 = s1 - m.s;

    }
}

请告诉我如何重载这个操作符

【问题讨论】:

  • 有一个来自 MSDN 的示例,如何重载运算符:msdn.microsoft.com/en-us/library/aa288467(v=vs.71).aspx
  • 天哪,千万不要这样做。这是我见过的最糟糕的运算符重载用法。这违反了关于正确和正确使用运算符重载的所有准则。如果某本书或老师建议您这样做,请买一本更好的书或更好的老师,因为您拥有的书很糟糕。

标签: c# string visual-studio operator-overloading


【解决方案1】:

您的代码是正确的,只需在从Main 调用时进行此更改

 string s1 = string.Empty;
 s1 = s1 - m;

它失败了,因为您的运算符重载需要 string and MyString 参数,而您提供的是 String and String

【讨论】:

    猜你喜欢
    • 2015-09-16
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    相关资源
    最近更新 更多