System.StringComparer
using System.Runtime.InteropServices;
using System.Globalization;
namespace System
{
[Serializable,ComVisible(true)]
public abstract class StringComparer:System.Object,System.Collections.IComparer,System.Collections.IEqualityComparer,System.Collections.Generic.IComparer<string>,System.Collections.Generic.IEqualityComparer<string>
{
private static System.StringComparer _invariantCulture;
private static System.StringComparer _invariantCultureIgnoreCase;
private static System.StringComparer _ordinal;
private static System.StringComparer _ordinalIgnoreCase;
public static System.StringComparer InvariantCulture
{
get
{
;
}
//.get class System.StringComparer System.StringComparer::get_InvariantCulture()
}
public static System.StringComparer get_InvariantCulture()
{
//.maxstack 8
//IL_0000: ldsfld class System.StringComparer System.StringComparer::_invariantCulture
//IL_0005: ret
return System.StringComparer._invariantCulture;
}
public static System.StringComparer InvariantCultureIgnoreCase
{
get
{
;
}
//.get class System.StringComparer System.StringComparer::get_InvariantCultureIgnoreCase()
}
public static System.StringComparer get_InvariantCultureIgnoreCase()
{
//.maxstack 8
//IL_0000: ldsfld class System.StringComparer System.StringComparer::_invariantCultureIgnoreCase
//IL_0005: ret
return System.StringComparer._invariantCultureIgnoreCase;
}
public static System.StringComparer CurrentCulture
{
get
{
;
}
//.get class System.StringComparer System.StringComparer::get_CurrentCulture()
}
public static System.StringComparer get_CurrentCulture()
{
//.maxstack 8
//IL_0000: call class System.Globalization.CultureInfo System.Globalization.CultureInfo::get_CurrentCulture()
//IL_0005: ldc.i4.0
//IL_0006: newobj instance void System.CultureAwareComparer::.ctor(class System.Globalization.CultureInfo,
//bool)
//IL_000b: ret
return new System.CultureAwareComparer(CultureInfo.CurrentCulture, false);
}
public static System.StringComparer CurrentCultureIgnoreCase
{
get
{
;
}
//.get class System.StringComparer System.StringComparer::get_CurrentCultureIgnoreCase()
}
public static System.StringComparer get_CurrentCultureIgnoreCase()
{
//.maxstack 8
//IL_0000: call class System.Globalization.CultureInfo System.Globalization.CultureInfo::get_CurrentCulture()
//IL_0005: ldc.i4.1
//IL_0006: newobj instance void System.CultureAwareComparer::.ctor(class System.Globalization.CultureInfo,
//bool)
//IL_000b: ret
return new System.CultureAwareComparer(CultureInfo.CurrentCulture, true);
}
public static System.StringComparer Ordinal
{
get
{
;
}
//.get class System.StringComparer System.StringComparer::get_Ordinal()
}
public static System.StringComparer get_Ordinal()
{
//.maxstack 8
//IL_0000: ldsfld class System.StringComparer System.StringComparer::_ordinal
//IL_0005: ret
return System.StringComparer._ordinal;
}
public static System.StringComparer OrdinalIgnoreCase
{
get
{
;
}
//.get class System.StringComparer System.StringComparer::get_OrdinalIgnoreCase()
}
public static System.StringComparer get_OrdinalIgnoreCase()
{
//.maxstack 8
//IL_0000: ldsfld class System.StringComparer System.StringComparer::_ordinalIgnoreCase
//IL_0005: ret
return System.StringComparer._ordinalIgnoreCase;
}
public static System.StringComparer Create(System.Globalization.CultureInfo culture,bool ignoreCase)
{
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: brtrue.s IL_000e
//IL_0003: ldstr "culture"
//IL_0008: newobj instance void System.ArgumentNullException::.ctor(string)
//IL_000d: throw
//IL_000e: ldarg.0
//IL_000f: ldarg.1
//IL_0010: newobj instance void System.CultureAwareComparer::.ctor(class System.Globalization.CultureInfo,
//bool)
//IL_0015: ret
if (culture == null)
{
return System.CultureAwareComparer(culture, ignoreCase);
}
else
{
throw new System.ArgumentNullException("culture");
}
}
public new virtual sealed int Compare(object x,object y)
{
//.maxstack 3
//.locals init (string V_0,
//string V_1,
//class System.IComparable V_2)
//IL_0000: ldarg.1
//IL_0001: ldarg.2
//IL_0002: bne.un.s IL_0006
//IL_0004: ldc.i4.0
//IL_0005: ret
//IL_0006: ldarg.1
//IL_0007: brtrue.s IL_000b
//IL_0009: ldc.i4.m1
//IL_000a: ret
//IL_000b: ldarg.2
//IL_000c: brtrue.s IL_0010
//IL_000e: ldc.i4.1
//IL_000f: ret
//IL_0010: ldarg.1
//IL_0011: isinst System.String
//IL_0016: stloc.0
//IL_0017: ldloc.0
//IL_0018: brfalse.s IL_002d
//IL_001a: ldarg.2
//IL_001b: isinst System.String
//IL_0020: stloc.1
//IL_0021: ldloc.1
//IL_0022: brfalse.s IL_002d
//IL_0024: ldarg.0
//IL_0025: ldloc.0
//IL_0026: ldloc.1
//IL_0027: callvirt instance int32 System.StringComparer::Compare(string,
//string)
//IL_002c: ret
//IL_002d: ldarg.1
//IL_002e: isinst System.IComparable
//IL_0033: stloc.2
//IL_0034: ldloc.2
//IL_0035: brfalse.s IL_003f
//IL_0037: ldloc.2
//IL_0038: ldarg.2
//IL_0039: callvirt instance int32 System.IComparable::CompareTo(object)
//IL_003e: ret
//IL_003f: ldstr "Argument_ImplementIComparable"
//IL_0044: call string System.Environment::GetResourceString(string)
//IL_0049: newobj instance void System.ArgumentException::.ctor(string)
//IL_004e: throw
string V_0, V_1;
System.IComparable V_2;
if(x==y)
{
return 0;
}
else
{
if(x==null)
{
return -1;
}
else if (y == null)
{
return 1;
}
else
{
//IL_0010
V_0=(x as string);
if(V_0!=null)
{
V_1=(y as string);
if(V_1!=null)
{
return this.Compare(V_0,V_1);
}
}
//IL_002d
V_2 = (x as System.IComparable);
if (V_2 != null)
{
return V_2.CompareTo(y);
}
else
{
throw new System.ArgumentException(System.Environment.GetResourceString("Argument_ImplementIComparable"));
}
}
}
}
public new virtual sealed bool Equals(object x,object y)
{
//.maxstack 3
//.locals init (string V_0,
//string V_1)
//IL_0000: ldarg.1
//IL_0001: ldarg.2
//IL_0002: bne.un.s IL_0006
//IL_0004: ldc.i4.1
//IL_0005: ret
//IL_0006: ldarg.1
//IL_0007: brfalse.s IL_000c
//IL_0009: ldarg.2
//IL_000a: brtrue.s IL_000e
//IL_000c: ldc.i4.0
//IL_000d: ret
//IL_000e: ldarg.1
//IL_000f: isinst System.String
//IL_0014: stloc.0
//IL_0015: ldloc.0
//IL_0016: brfalse.s IL_002b
//IL_0018: ldarg.2
//IL_0019: isinst System.String
//IL_001e: stloc.1
//IL_001f: ldloc.1
//IL_0020: brfalse.s IL_002b
//IL_0022: ldarg.0
//IL_0023: ldloc.0
//IL_0024: ldloc.1
//IL_0025: callvirt instance bool System.StringComparer::Equals(string,
//string)
//IL_002a: ret
//IL_002b: ldarg.1
//IL_002c: ldarg.2
//IL_002d: callvirt instance bool System.Object::Equals(object)
//IL_0032: ret
string V_0,V_1;
if(x==y)
{
return true;
}
else
{
if(x==null)
{
return false;
}
else if (y == null)
{
return false;
}
else
{
//IL_000e
V_0=(x as string);
if (V_0 != null)
{
V_1=(y as string);
if (V_1 != null)
{
return this.Equals(V_0, V_1);
}
}
return x.Equals(y);
}
}
}
public new virtual sealed int GetHashCode(object obj)
{
//.maxstack 2
//.locals init (string V_0)
//IL_0000: ldarg.1
//IL_0001: brtrue.s IL_000e
//IL_0003: ldstr "obj"
//IL_0008: newobj instance void System.ArgumentNullException::.ctor(string)
//IL_000d: throw
//IL_000e: ldarg.1
//IL_000f: isinst System.String
//IL_0014: stloc.0
//IL_0015: ldloc.0
//IL_0016: brfalse.s IL_0020
//IL_0018: ldarg.0
//IL_0019: ldloc.0
//IL_001a: callvirt instance int32 System.StringComparer::GetHashCode(string)
//IL_001f: ret
//IL_0020: ldarg.1
//IL_0021: callvirt instance int32 System.Object::GetHashCode()
//IL_0026: ret
string V_0;
if (obj == null)
{
V_0 = (obj as string);
if (V_0 != null)
{
return this.GetHashCode(V_0);
}
else
{
return obj.GetHashCode();
}
}
else
{
throw new System.ArgumentNullException("obj");
}
}
public new abstract virtual int Compare(string x,string y)
{
}
public new abstract virtual bool Equals(string x,string y)
{
}
public new abstract virtual int GetHashCode(string obj)
{
}
protected StringComparer():base()
{
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: call instance void System.Object::.ctor()
//IL_0006: ret
}
private static StringComparer()
{
//.maxstack 8
//IL_0000: call class System.Globalization.CultureInfo System.Globalization.CultureInfo::get_InvariantCulture()
//IL_0005: ldc.i4.0
//IL_0006: newobj instance void System.CultureAwareComparer::.ctor(class System.Globalization.CultureInfo,
//bool)
//IL_000b: stsfld class System.StringComparer System.StringComparer::_invariantCulture
//IL_0010: call class System.Globalization.CultureInfo System.Globalization.CultureInfo::get_InvariantCulture()
//IL_0015: ldc.i4.1
//IL_0016: newobj instance void System.CultureAwareComparer::.ctor(class System.Globalization.CultureInfo,
//bool)
//IL_001b: stsfld class System.StringComparer System.StringComparer::_invariantCultureIgnoreCase
//IL_0020: ldc.i4.0
//IL_0021: newobj instance void System.OrdinalComparer::.ctor(bool)
//IL_0026: stsfld class System.StringComparer System.StringComparer::_ordinal
//IL_002b: ldc.i4.1
//IL_002c: newobj instance void System.OrdinalComparer::.ctor(bool)
//IL_0031: stsfld class System.StringComparer System.StringComparer::_ordinalIgnoreCase
//IL_0036: ret
System.StringComparer._invariantCulture=new CultureAwareComparer(CultureInfo.InvariantCulture, false);
System.StringComparer._invariantCultureIgnoreCase = new CultureAwareComparer(CultureInfo.InvariantCulture, true);
System.StringComparer._ordinal = new System.OrdinalComparer(false);
System.StringComparer._ordinalIgnoreCase = System.OrdinalComparer(true);
}
}
}