是否有理由为什么System DLL在Silverlight和其他C#库中是不同的

Cub*_*key 6 .net c# 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
Run Code Online (Sandbox Code Playgroud)

为什么Silverlight框架中有一个特殊的System dll,它将比较作为不区分大小写的?

我已经遇到了大量的方法,它们有点令人讨厌,它们要么行为不同,要么一般都缺失.

Mar*_*ell 3

我之所以问这个问题,是因为我编写了一个在 Silverlight 中使用的扩展方法,结果却发现该功能神奇地开始为 Silver Light 工作。

有一种方法适用于2.0public bool string.Contains(string)及以上的所有 .NET 版本(2.0、3.0、3.5、4.0 SL 3/4 WP 7.0/ 7.1

有趣的是,SL 版本仅从 SL 3 / 4 列出 -您是否有可能从 2.0 解决方案更新?就能解释这一点。

否则,定义的方法始终优先于扩展方法,因此永远不应该调用扩展方法(我们可以排除 .NET 1.1,因为 C# 1.2 编译器不包含扩展方法)。

对于 .NET 2.0,MSDN 将其记录为:

此方法使用当前区域性执行单词(区分大小写和区域性)搜索。搜索从该字符串的第一个字符位置开始,一直到最后一个字符位置。

所有其他版本(包括 Silverlight)均列出为:

此方法执行序数(区分大小写且不区分区域性)比较。搜索从该字符串的第一个字符位置开始,一直到最后一个字符位置。

如果您看到其他情况(请高音检查),这可能是一个框架错误......但我谨慎地期待一个更简单的解释。