C# 字符串扩展重载
C# String Extension Overloading
我想为重载 CompareTo 方法的字符串创建一个扩展 class:
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);
}
但是,当我尝试在像这样的普通 class 文件中使用它时:
currentAuthor.FirstName.CompareTo(previousAuthor.FirstName, true, true)
我收到一个编译错误,指出没有采用 3 个参数的方法 CompareTo 的重载。
我的想法可行吗?
我知道在正常情况下 classes 我可以超载直到儿子回家。不管是静态的还是非静态的class.
Extensions 有例外吗?我并没有真正与他们合作过很多。
我刚刚通过设置 dotnetfiddle 进行了确认,请参阅此处:https://dotnetfiddle.net/62HhQ8。你正在尝试做的事情应该可以正常工作。
正如其他人所提到的,我认为您只需要确保定义扩展方法的名称空间包含在您尝试从中调用 CompareTo 扩展方法的每个文件中。
否则,我没有发现任何问题,并确认您的方法有效。
我想为重载 CompareTo 方法的字符串创建一个扩展 class:
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);
}
但是,当我尝试在像这样的普通 class 文件中使用它时:
currentAuthor.FirstName.CompareTo(previousAuthor.FirstName, true, true)
我收到一个编译错误,指出没有采用 3 个参数的方法 CompareTo 的重载。
我的想法可行吗?
我知道在正常情况下 classes 我可以超载直到儿子回家。不管是静态的还是非静态的class.
Extensions 有例外吗?我并没有真正与他们合作过很多。
我刚刚通过设置 dotnetfiddle 进行了确认,请参阅此处:https://dotnetfiddle.net/62HhQ8。你正在尝试做的事情应该可以正常工作。
正如其他人所提到的,我认为您只需要确保定义扩展方法的名称空间包含在您尝试从中调用 CompareTo 扩展方法的每个文件中。
否则,我没有发现任何问题,并确认您的方法有效。