2013-10-22 80 views
5

當我反編譯String.IndexOf (String)方法時,我看到這個;究竟是什麼String.LegacyMode屬性?

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

在第二參數定義:

  • 如果string.LegacyModetrueStringComparison.Ordinal進行評價。
  • 如果string.LegacyModefalse,StringComparison.CurrentCulture被評估。

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

當我反編譯這個屬性我看到這一點:

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

我搜索在谷歌約String.LegacyModeCompatibilitySwitches.IsAppEarlierThanSilverlight4第一,但我找不到任何有用的信息。

你能開導我嗎?

+1

@Downvoter至少在意嗎? –

回答

5

爲什麼不檢查源,MSDN :)

忍者編輯:我剛纔看到你貼在你的問題中頂部的鏈接。從其他版本下拉列表中選擇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的應用程序,則會執行序數比較;否則,它執行文化敏感的比較。