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); 
}
}
}

posted @ 2010-08-28 21:18  Aegis  阅读(618)  评论(0编辑  收藏  举报