Silverlight和其他C#库中的系统dll不同有什么原因吗
我问这个问题的原因是因为我编写了一个在Silverlight中使用的扩展方法,结果发现该功能神奇地开始为Silverlight工作 范例Silverlight和其他C#库中的系统dll不同有什么原因吗,c#,.net,silverlight,C#,.net,Silverlight,我问这个问题的原因是因为我编写了一个在Silverlight中使用的扩展方法,结果发现该功能神奇地开始为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
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,它可以像case instive那样进行比较
我在很多方法中都遇到过这种情况,它们要么表现不同,要么就是总体上不存在,这有点让人恼火
我问这个问题的原因是因为我编写了一个在Silverlight中使用的扩展方法,结果发现该功能神奇地开始为Silverlight工作
从2.0开始(,)的所有版本的.NET都有一个public bool string.Contains(string)
方法
有趣的是,SL版本仅在SL 3/4中列出-您是否可以从2.0解决方案中进行更新?这可以解释它
否则,定义的方法总是优先于扩展方法,因此永远不应该调用扩展方法(我们可以排除.NET 1.1,因为C#1.2编译器不包括扩展方法)
对于.NET 2.0 MSDN,其文档如下:
此方法使用当前区域性执行单词(区分大小写和区域性)搜索。搜索从该字符串的第一个字符位置开始,一直搜索到最后一个字符位置
所有其他版本(包括Silverlight)如下所示:
此方法执行顺序(区分大小写和不区分区域性)比较。搜索从该字符串的第一个字符位置开始,一直搜索到最后一个字符位置
如果您看到了其他情况(请检查高音),则可能是框架错误。。。但我谨慎地期待一个更简单的解释。我最恼火的是,在系统中,例如:c:\Program Files(x86)\Reference Assembly\Microsoft\Framework\Silverlight\v4.0\System.dll和c:\Program Files(x86)之间存在着巨大的差异\引用Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.dll它们都是系统和系统。String.Contains()的行为不同,它比任何东西都麻烦,但我一直遇到类似的小问题。我刚刚在标准Silverlight项目上测试了这一点;它返回了预期的
false
。是的,我看到它是从版本3和版本4开始的。但我想我的问题更多的是,他们为什么不给出。对非silverlight版本也有同样的不敏感,以保持其一致性?@COUBER。。。是吗?至少这是MSDN声明的内容。@I澄清了MSDN引用的内容;在.NET2.0中,它区分大小写,区分区域性;在其他方面,它区分大小写,不区分文化。所以无论哪种方式,它都应该区分大小写