- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道这是一个愚蠢的错误,但我无法弄清楚发生了什么。我已经创建了一些扩展方法并尝试访问它们,但是默认方法不断被调用:
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/
我知道这是一个愚蠢的错误,但我无法弄清楚发生了什么。我已经创建了一些扩展方法并尝试访问它们,但是默认方法不断被调用: namespace MyProject { public static c
我有一个 mixin,它具有检查用户是否登录的方法: authenticated: function() { return this.state.currentUser !== null; }
我有一个源文件,其中包含以下代码,它使用 python 的 jsonrpclib 模块 server = jsonrpclib.Server(url) try: res = server.user
对于知道自己在做什么的人来说,这会很容易。 我有一个启动日历按钮、一个继续按钮和一个日期文本框。该按钮在弹出窗口中启动 JavaScript 日历。该日历使用以下方法将日期返回到 Reservatio
我是一名优秀的程序员,十分优秀!