我问的原因是因为我写了一个在Silverlight中使用的扩展方法,但却发现该功能神奇地开始为银光工作。
示例
string sentence = "I am a sentence that has some words";
sentence.Contains("N"); //would return false, silverlight true
sentence.Contains("n"); //would return true, silverlight true
为什么Silverlight框架中有一个特殊的系统dll,它将比较视为不区分大小写?
我已经遇到了大量的方法,它们有点令人讨厌,它们要么行为不同,要么一般都不见了。
答案 0 :(得分:3)
我问的原因是因为我写了一个在Silverlight中使用的扩展方法,但却发现该功能神奇地开始为银光工作。
从2.0开始,所有版本的.NET都有一个public bool string.Contains(string)
方法(2.0,3.0,3.5,4.0,{{3} })。
有趣的是,SL版本仅从SL 3/4列出 - 您是否可以从2.0解决方案更新? 可以然后考虑它。
否则,定义的方法总是优先于扩展方法,因此永远不应该调用扩展方法(我们可以排除.NET 1.1,因为C#1.2编译器不包含扩展方法)。
对于.NET 2.0 MSDN,请将其标记为:
此方法使用当前文化执行单词(区分大小写和文化敏感)搜索。搜索从该字符串的第一个字符位置开始,并继续到最后一个字符位置。
所有其他版本(包括Silverlight)列为:
此方法执行序数(区分大小写和区分大小写)比较。搜索从该字符串的第一个字符位置开始,并继续到最后一个字符位置。
如果你没有看到(请高音检查),可能是一个框架错误......但我谨慎地期待一个更简单的解释。