gpt4 book ai didi

未见 C# 扩展方法

转载 作者:行者123 更新时间:2023-11-30 20:24:03 24 4
gpt4 key购买 nike

我知道这是一个愚蠢的错误,但我无法弄清楚发生了什么。我已经创建了一些扩展方法并尝试访问它们,但是默认方法不断被调用:

namespace MyProject
{
public static class Cleanup
{

public static string cleanAbbreviations(this String str) {
if (str.Contains("JR"))
str = str.Replace("JR", "Junior");
return str;
}


public static bool Contains(this String str, string toCheck)
{//Ignore the case of our comparison
return str.IndexOf(toCheck, StringComparison.OrdinalIgnoreCase) >= 0;
}
public static string Replace(this String str, string oldStr, string newStr)
{//Ignore the case of what we are replacing
return Regex.Replace(str, oldStr, newStr, RegexOptions.IgnoreCase);
}

}
}

最佳答案

只有在找不到合适的实例方法时,编译器才会寻找扩展方法。您不能以这种方式隐藏现有的实例方法。

例如已经在 string 上声明了 Contains 方法,它接受一个 string 作为参数。这就是您的扩展方法未被调用的原因。

来自 C# 规范:

7.6.5.2 Extension method invocations

The preceding rules mean that instance methods take precedence overextension methods, that extension methods available in innernamespace declarations take precedence over extension methodsavailable in outer namespace declarations, and that extension methodsdeclared directly in a namespace take precedence over extensionmethods imported into that same namespace with a using namespacedirective.

关于未见 C# 扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27583737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com