当我反编译String.IndexOf (String)
方法时,我看到了这一点;
[__DynamicallyInvokable]
public int IndexOf(string value)
{
return this.IndexOf(value, string.LegacyMode ? StringComparison.Ordinal : StringComparison.CurrentCulture);
}
在第二个参数定义中:
string.LegacyMode
为true
,则会对StringComparison.Ordinal
进行评估。string.LegacyMode
为false
,则会对StringComparison.CurrentCulture
进行评估。但是String.LegacyMode
究竟意味着什么?
当我反编译这个属性时,我看到了:
internal static bool LegacyMode
{
get
{
return CompatibilitySwitches.IsAppEarlierThanSilverlight4;
}
}
我首先在Google上搜索了String.LegacyMode和CompatibilitySwitches.IsAppEarlierThanSilverlight4,但我找不到任何有用的信息。
你可以开导我吗?答案 0 :(得分:5)
为什么不检查来源,MSDN:)
Ninja编辑:我刚刚看到您在问题顶部发布的链接。从其他版本的下拉列表中选择Silverlight,您将看到下面的注释。
来电者须知
从Silverlight 4开始,String.IndexOf(String)方法的行为已更改。在Silverlight 4中,它使用当前文化执行区分大小写和文化敏感的比较,以查找第一次出现的值。这符合完整.NET Framework中String.IndexOf(String)方法的行为。在Silverlight 2和Silverlight 3中,String.IndexOf(String)执行序数比较。如果公共语言运行库确定使用Silverlight 2或Silverlight 3编译基于Silverlight的应用程序,它将执行序数比较;否则,它会进行文化敏感的比较。