Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight和其他C#库中的系统dll不同有什么原因吗_C#_.net_Silverlight - Fatal编程技术网

Silverlight和其他C#库中的系统dll不同有什么原因吗

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

我问这个问题的原因是因为我编写了一个在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
为什么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中,它区分大小写,区分区域性;在其他方面,它区分大小写,不区分文化。所以无论哪种方式,它都应该区分大小写