2013-10-22 13 views
5

Wenn ich String.IndexOf (String) Methode dekompiliere, sehe ich das;Was genau ist String.LegacyMode-Eigenschaft?

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

Im zweiten Parameterdefinition:

  • wenn string.LegacyMode ist true, StringComparison.Ordinal ausgewertet wird.
  • Wenn string.LegacyModefalse ist, wird StringComparison.CurrentCulture ausgewertet.

Aber was genau bedeutet String.LegacyMode?

Als ich diese Eigenschaft decompile Ich sehe dies:

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

Ich suchte über String.LegacyMode und CompatibilitySwitches.IsAppEarlierThanSilverlight4 auf Google zuerst aber ich konnte keine nützlichen Informationen.

Können Sie mich aufklären?

+1

@Downvoter Vorsicht zu kommentieren? –

Antwort

5

Warum die Quelle nicht überprüfen,

Ninja bearbeiten :) MSDN: Ich sah nur den Link, den Sie an der Spitze Ihrer Frage gestellt. Wählen Sie Silverlight aus dem Dropdown-Menü für die anderen Versionen und Sie werden den Hinweis unten sehen.

String.IndexOf Method

Hinweise zu Aufrufern

Ab Silver 4, das Verhalten des String.IndexOf (String) Methode hat sich geändert. In Silverlight 4 führt es einen Vergleich zwischen Groß- und Kleinschreibung und kultursensitiven Vergleichen unter Verwendung der aktuellen Kultur durch, um das erste Vorkommen von Werten zu finden. Dies entspricht dem Verhalten der String.IndexOf (String) -Methode im vollständigen .NET Framework. In Silverlight 2 und Silverlight 3 führt String.IndexOf (String) einen ordinalen Vergleich durch. Wenn die Common Language Runtime feststellt, dass eine Silverlight-basierte Anwendung mit Silverlight 2 oder Silverlight 3 kompiliert wurde, führt sie einen ordinalen Vergleich durch. Ansonsten führt es einen kultursensitiven Vergleich durch.