C#字符串扩展重载

时间:2016-02-03 00:29:24

标签: c# overloading

我想为string创建一个扩展类,它使用以下内容重载CompareTo方法:

    public static bool CompareTo(this string input, string compareValue, bool ignoreCase, bool removeExtraWhiteSpaces)
    {
        if (removeExtraWhiteSpaces)
        {
            input = input.RemoveNullsAndWhiteSpace(" ").Trim();
            compareValue = compareValue.RemoveNullsAndWhiteSpace(" ").Trim();
        }

        return (String.Compare(input, compareValue, ignoreCase)==0);
    }

但是,当我尝试在普通的类文件中使用它时:

currentAuthor.FirstName.CompareTo(previousAuthor.FirstName, true, true)

我收到一个编译错误,说明方法CompareTo没有超载,需要3个参数。

我的想法可能吗?

我知道在正常课程中,我可以超载,直到儿子回家。无论是静态类还是非静态类。

Extensions是否有例外?我并没有真正与他们合作过。

1 个答案:

答案 0 :(得分:1)

我刚刚通过设置一个dotnetfiddle确认,请看这里:https://dotnetfiddle.net/62HhQ8。那你要做的就应该工作正常。

正如其他人所提到的,我认为您只需要确保您的扩展方法定义的命名空间包含在您尝试调用CompareTo扩展方法的每个文件中。

否则,我认为没有错,并确认您的方法有效。