5

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

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

在第二个参数定义中:

  • 如果string.LegacyModetrueStringComparison.Ordinal则进行评估。
  • 如果string.LegacyModefalseStringComparison.CurrentCulture则进行评估。

但究竟是String.LegacyMode什么意思?

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

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

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

你能启发我吗?

4

1 回答 1

5

为什么不检查源,MSDN :)

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

String.IndexOf 方法

来电者须知

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

于 2013-10-22T10:22:54.370 回答