什么是String.LegacyMode属性?

时间:2013-10-22 10:16:29

标签: c# .net string legacy

当我反编译String.IndexOf (String)方法时,我看到了这一点;

[__DynamicallyInvokable]
public int IndexOf(string value)
{
  return this.IndexOf(value, string.LegacyMode ? StringComparison.Ordinal : StringComparison.CurrentCulture);
}

在第二个参数定义中:

  • 如果string.LegacyModetrue,则会对StringComparison.Ordinal进行评估。
  • 如果string.LegacyModefalse,则会对StringComparison.CurrentCulture进行评估。

但是String.LegacyMode究竟意味着什么?

当我反编译这个属性时,我看到了:

internal static bool LegacyMode
{
  get
  {
    return CompatibilitySwitches.IsAppEarlierThanSilverlight4;
  }
}

我首先在Google上搜索了String.LegacyModeCompatibilitySwitches.IsAppEarlierThanSilverlight4,但我找不到任何有用的信息。

你可以开导我吗?

1 个答案:

答案 0 :(得分:5)

为什么不检查来源,MSDN:)

Ninja编辑:我刚刚看到您在问题顶部发布的链接。从其他版本的下拉列表中选择Silverlight,您将看到下面的注释。

String.IndexOf Method

  

来电者须知

     

从Silverlight 4开始,String.IndexOf(String)方法的行为已更改。在Silverlight 4中,它使用当前文化执行区分大小写和文化敏感的比较,以查找第一次出现的值。这符合完整.NET Framework中String.IndexOf(String)方法的行为。在Silverlight 2和Silverlight 3中,String.IndexOf(String)执行序数比较。如果公共语言运行库确定使用Silverlight 2或Silverlight 3编译基于Silverlight的应用程序,它将执行序数比较;否则,它会进行文化敏感的比较。