System.Byte

using System.Runtime.InteropServices;
using System.Globalization;
namespace System
{
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi), Serializable, Comvisible(true)]
    public struct Byte : IComparable, IFormattable, IConvertible, IComparable<byte>, IEquatable<byte>
    {
        public const byte MaxValue = (byte)0xFF;
        public const byte MinValue = (byte)0x00;
        private byte m_value;
        public new virtual sealed int CompareTo(object @value)
        {
            //.maxstack  8
            //IL_0000:  ldarg.1
            //IL_0001:  brtrue.s   IL_0005

            //IL_0003:  ldc.i4.1
            //IL_0004:  ret

            //IL_0005:  ldarg.1
            //IL_0006:  isinst     System.Byte
            //IL_000b:  brtrue.s   IL_001d

            //IL_000d:  ldstr      "Arg_MustBeByte"
            //IL_0012:  call       string System.Environment::GetResourceString(string)
            //IL_0017:  newobj     instance void System.ArgumentException::.ctor(string)
            //IL_001c:  throw

            //IL_001d:  ldarg.0
            //IL_001e:  ldind.u1
            //IL_001f:  ldarg.1
            //IL_0020:  unbox.any  System.Byte
            //IL_0025:  sub
            //IL_0026:  ret
            if (@value == null)
            {
                return 1;
            }
            else
            {
                if ((@value as byte) == null)
                {
                    throw new SrgumentException(Environment.GetResourceString("Arg_MustBeByte"));
                }
                else
                {
                    return (this - (byte)@value);
                }
            }

        }
        public new virtual sealed int CompareTo(byte @value)
        {
            //.maxstack  8
            //IL_0000:  ldarg.0
            //IL_0001:  ldind.u1
            //IL_0002:  ldarg.1
            //IL_0003:  sub
            //IL_0004:  ret
            return (this - @value);
        }
        public virtual bool Equals(object obj)
        {
            //.maxstack  8
            //IL_0000:  ldarg.1
            //IL_0001:  isinst     System.Byte
            //IL_0006:  brtrue.s   IL_000a

            //IL_0008:  ldc.i4.0
            //IL_0009:  ret

            //IL_000a:  ldarg.0
            //IL_000b:  ldind.u1
            //IL_000c:  ldarg.1
            //IL_000d:  unbox.any  System.Byte
            //IL_0012:  ceq
            //IL_0014:  ret
            if ((obj as byte) == null)
            {
                return false;
            }
            else
            {
                return (this == (byte)obj);//利用IL的ceq
            }
        }
        public new virtual sealed bool Equals(byte obj)
        {
            //.maxstack  8
            //IL_0000:  ldarg.0
            //IL_0001:  ldind.u1
            //IL_0002:  ldarg.1
            //IL_0003:  ceq
            //IL_0005:  ret
            return (this == (byte)obj);//利用IL的ceq
        }
        public override int GetHashCode()
        {
            //.maxstack  8
            //IL_0000:  ldarg.0
            //IL_0001:  ldind.u1
            //IL_0002:  ret
            return this;
        }
        public static byte Parse(string s)
        {
            //.maxstack  8
            //IL_0000:  ldarg.0
            //IL_0001:  ldc.i4.7
            //IL_0002:  call       class System.Globalization.NumberFormatInfo System.Globalization.NumberFormatInfo::get_CurrentInfo()
            //IL_0007:  call       uint8 System.Byte::Parse(string,
            //                                              valuetype System.Globalization.NumberStyles,
            //                                              class System.Globalization.NumberFormatInfo)
            //IL_000c:  ret
            return Byte.Parse(s, NumberStyles.Integer, NumberFormatInfo.CurrentInfo);
        }
        public static byte Parse(string s, NumberStyles style)
        {
            //.maxstack  8
            //IL_0000:  ldarg.1
            //IL_0001:  call       void System.Globalization.NumberFormatInfo::ValidateParseStyleInteger(valuetype System.Globalization.NumberStyles)
            //IL_0006:  ldarg.0
            //IL_0007:  ldarg.1
            //IL_0008:  call       class System.Globalization.NumberFormatInfo System.Globalization.NumberFormatInfo::get_CurrentInfo()
            //IL_000d:  call       uint8 System.Byte::Parse(string,
            //                                              valuetype System.Globalization.NumberStyles,
            //                                              class System.Globalization.NumberFormatInfo)
            //IL_0012:  ret
            NumberFormatInfo.ValidateParseStyleInteger(style);
            return Byte.Parse(s, style, NumberFormatInfo.CurrentInfo);
        }
        public static byte Parse(string s, System.IFormatProvider provider)
        {
            //.maxstack  8
            //IL_0000:  ldarg.0
            //IL_0001:  ldc.i4.7
            //IL_0002:  ldarg.1
            //IL_0003:  call       class System.Globalization.NumberFormatInfo System.Globalization.NumberFormatInfo::GetInstance(class System.IFormatProvider)
            //IL_0008:  call       uint8 System.Byte::Parse(string,
            //                                              valuetype System.Globalization.NumberStyles,
            //                                              class System.Globalization.NumberFormatInfo)
            //IL_000d:  ret
            return Byte.Parse(s, NumberStyles.Integer, NumberFormatInfo.GetInstance(provider));
        }
        public static byte Parse(string s, NumberStyles style, IFormatProvider provider)
        {
            //.maxstack  8
            //IL_0000:  ldarg.1
            //IL_0001:  call       void System.Globalization.NumberFormatInfo::ValidateParseStyleInteger(valuetype System.Globalization.NumberStyles)
            //IL_0006:  ldarg.0
            //IL_0007:  ldarg.1
            //IL_0008:  ldarg.2
            //IL_0009:  call       class System.Globalization.NumberFormatInfo System.Globalization.NumberFormatInfo::GetInstance(class System.IFormatProvider)
            //IL_000e:  call       uint8 System.Byte::Parse(string,
            //                                              valuetype System.Globalization.NumberStyles,
            //                                              class System.Globalization.NumberFormatInfo)
            //IL_0013:  ret
            NumberFormatInfo.ValidateParseStyleInteger(style);
            return Byte.Parse(s, style, NumberFormatInfo.GetInstance(provider));
        }
        private static byte Parse(string s, NumberStyles style, NumberFormatInfo info)
        {
            //.maxstack  3
            //.locals init (int32 V_0,
            //         class System.OverflowException V_1)
            //IL_0000:  ldc.i4.0
            //IL_0001:  stloc.0
            //.try
            //{
            //  IL_0002:  ldarg.0
            //  IL_0003:  ldarg.1
            //  IL_0004:  ldarg.2
            //  IL_0005:  call       int32 System.Number::ParseInt32(string,
            //                                                       valuetype System.Globalization.NumberStyles,
            //                                                       class System.Globalization.NumberFormatInfo)
            //  IL_000a:  stloc.0
            //  IL_000b:  leave.s    IL_001f

            //}  // end .try
            //catch System.OverflowException 
            //{
            //  IL_000d:  stloc.1
            //  IL_000e:  ldstr      "Overflow_Byte"
            //  IL_0013:  call       string System.Environment::GetResourceString(string)
            //  IL_0018:  ldloc.1
            //  IL_0019:  newobj     instance void System.OverflowException::.ctor(string,
            //                                                                     class System.Exception)
            //  IL_001e:  throw

            //}  // end handler
            //IL_001f:  ldloc.0
          //IL_0020:  ldc.i4.0
            //IL_0021:  blt.s      IL_002b

            //IL_0023:  ldloc.0
            //IL_0024:  ldc.i4     0xff
            //IL_0029:  ble.s      IL_003b

            //IL_002b:  ldstr      "Overflow_Byte"
            //IL_0030:  call       string System.Environment::GetResourceString(string)
            //IL_0035:  newobj     instance void System.OverflowException::.ctor(string)
            //IL_003a:  throw

            //IL_003b:  ldloc.0
            //IL_003c:  conv.u1
            //IL_003d:  ret
            int V_0;
            V_0 = 0;
            try
            {
                V_0 = System.Number.ParseInt32(s, style, info);
            }
            catch (System.OverflowException V_1)
            {
                throw new System.OverflowException(System.Environment.GetResourceString("Overflow_Byte"), V_1);
            }
            if (V_0 >= 0 && V_0 <= 0xff) return (byte)V_0;
            else throw new System.OverflowException(System.Environment.GetResourceString("Overflow_Byte"));
        }
        public static bool TryParse(string s, out byte result)
        {
            //.maxstack  8
            //IL_0000:  ldarg.0
            //IL_0001:  ldc.i4.7
            //IL_0002:  call       class System.Globalization.NumberFormatInfo System.Globalization.NumberFormatInfo::get_CurrentInfo()
            //IL_0007:  ldarg.1
            //IL_0008:  call       bool System.Byte::TryParse(string,
            //                                                valuetype System.Globalization.NumberStyles,
            //                                                class System.Globalization.NumberFormatInfo,
            //                                                uint8&)
            //IL_000d:  ret
            return Byte.TryParse(s, NumberStyles.Integer, NumberFormatInfo.CurrentInfo,out result);
        }
        public static bool TryParse(string s, NumberStyles style, IFormatProvider provider, out byte result)
        {
            //.maxstack  8
            //IL_0000:  ldarg.1
            //IL_0001:  call       void System.Globalization.NumberFormatInfo::ValidateParseStyleInteger(valuetype System.Globalization.NumberStyles)
            //IL_0006:  ldarg.0
            //IL_0007:  ldarg.1
            //IL_0008:  ldarg.2
            //IL_0009:  call       class System.Globalization.NumberFormatInfo System.Globalization.NumberFormatInfo::GetInstance(class System.IFormatProvider)
            //IL_000e:  ldarg.3
            //IL_000f:  call       bool System.Byte::TryParse(string,
            //                                                valuetype System.Globalization.NumberStyles,
            //                                                class System.Globalization.NumberFormatInfo,
            //                                                uint8&)
            //IL_0014:  ret
            NumberFormatInfo.ValidateParseStyleInteger(style);
            return Byte.TryParse(s, style, NumberFormatInfo.GetInstance(provider),out result);
        }
        private static bool TryParse(string s, NumberStyles style, NumberFormatInfo info, out byte result)
        {
            //.maxstack  4
            //.locals init (int32 V_0)
            //IL_0000:  ldarg.3
            //IL_0001:  ldc.i4.0
            //IL_0002:  stind.i1
            //IL_0003:  ldarg.0
            //IL_0004:  ldarg.1
            //IL_0005:  ldarg.2
            //IL_0006:  ldloca.s   V_0
            //IL_0008:  call       bool System.Number::TryParseInt32(string,
            //                                                       valuetype System.Globalization.NumberStyles,
            //                                                       class System.Globalization.NumberFormatInfo,
            //                                                       int32&)
            //IL_000d:  brtrue.s   IL_0011

            //IL_000f:  ldc.i4.0
            //IL_0010:  ret

            //IL_0011:  ldloc.0
            //IL_0012:  ld.i4.0
            //IL_0013:  blt.s      IL_001d

            //IL_0015:  ldloc.0
            //IL_0016:  ldc.i4     0xff
            //IL_001b:  ble.s      IL_001f

            //IL_001d:  ldc.i4.0
            //IL_001e:  ret

            //IL_001f:  ldarg.3
            //IL_0020:  ldloc.0
            //IL_0021:  conv.u1
            //IL_0022:  stind.i1
            //IL_0023:  ldc.i4.1
            //IL_0024:  ret
            int V_0;
            result = 0;
            if (System.Number.TryParseInt32(s, style, info, out V_0))
            {
                if (V_0 >= 0 && V_0 <= 0xff)
                {
                    result =(byte) V_0;
                    return true;
                }
                else
                { 
                    return false; 
                }
            }
            else
            {
                return false;
            }
        }
        public override string ToString()
        {
            //.maxstack  8
            //IL_0000:  ldarg.0
            //IL_0001:  ldind.u1
            //IL_0002:  ldnull
            //IL_0003:  call       class System.Globalization.NumberFormatInfo System.Globalization.NumberFormatInfo::get_CurrentInfo()
            //IL_0008:  call       string System.Number::FormatInt32(int32,
            //                                                       string,
            //                                                       class System.Globalization.NumberFormatInfo)
            //IL_000d:  ret
            return System.Number.FormatInt32((int32)this, null, NumberFormatInfo.CurrentInfo);

        }
        public string ToString(string format)
        {
            //.maxstack  8
            //IL_0000:  ldarg.0
            //IL_0001:  ldind.u1
            //IL_0002:  ldarg.1
            //IL_0003:  call       class System.Globalization.NumberFormatInfo System.Globalization.NumberFormatInfo::get_CurrentInfo()
            //IL_0008:  call       string System.Number::FormatInt32(int32,
            //                                                       string,
            //                                                       class System.Globalization.NumberFormatInfo)
            //IL_000d:  ret
            return System.Number.FormatInt32((int32)this,format, NumberFormatInfo.CurrentInfo);
        }
        public new virtual sealed string ToString(IFormatProvider provider)
        {
            //.maxstack  8
            //IL_0000:  ldarg.0
            //IL_0001:  ldind.u1
            //IL_0002:  ldnull
            //IL_0003:  ldarg.1
            //IL_0004:  call       class System.Globalization.NumberFormatInfo System.Globalization.NumberFormatInfo::GetInstance(class System.IFormatProvider)
            //IL_0009:  call       string System.Number::FormatInt32(int32,
            //                                                       string,
            //                                                       class System.Globalization.NumberFormatInfo)
            //IL_000e:  ret
            return System.Number.FormatInt32((int32)this, null, NumberFormatInfo.GetInstance(provider));
        }
        public new virtual sealed string ToString(string format, IFormatProvider provider)
        {
            //.maxstack  8
            //IL_0000:  ldarg.0
            //IL_0001:  ldind.u1
            //IL_0002:  ldarg.1
            //IL_0003:  ldarg.2
            //IL_0004:  call       class System.Globalization.NumberFormatInfo System.Globalization.NumberFormatInfo::GetInstance(class System.IFormatProvider)
            //IL_0009:  call       string System.Number::FormatInt32(int32,
            //                                                       string,
            //                                                       class System.Globalization.NumberFormatInfo)
            //IL_000e:  ret
            return System.Number.FormatInt32((int32)this, format, NumberFormatInfo.GetInstance(provider));
        }
        public new virtual sealed System.ypeCode GetTypeCode()
        {
            //.maxstack  8
            //IL_0000:  ldc.i4.6
            //IL_0001:  ret
            return TypeCode.Byte;
        }
        private new virtual sealed bool IConvertible.ToBoolean(IFormatProvider provider)
        {
            //.maxstack  8
            //IL_0000:  ldarg.0
            //IL_0001:  ldind.u1
            //IL_0002:  call       bool System.Convert::ToBoolean(uint8)
            //IL_0007:  ret
            return Convert.ToBoolean(this);
        }
        private new virtual sealed char IConvertible.ToChar(IFormatProvider provider)
        {
            //.maxstack  8
            //IL_0000:  ldarg.0
            //IL_0001:  ldind.u1
            //IL_0002:  call       char System.Convert::ToChar(uint8)
            //IL_0007:  ret
            return Convert.ToChar(this);
        }
        private new virtual sealed sbyte IConvertible.ToSByte(IFormatProvider provider)
        {
            //.maxstack  8
            //IL_0000:  ldarg.0
            //IL_0001:  ldind.u1
            //IL_0002:  call       int8 System.Convert::ToSByte(uint8)
            //IL_0007:  ret
            return Convert.ToSByte(this);
        }
        private new virtual sealed byte IConvertible.ToByte(IFormatProvider provider)
        {
            //.maxstack  8
            //IL_0000:  ldarg.0
            //IL_0001:  ldind.u1
            //IL_0002:  ret
            return this;
        }
        private new virtual sealed short IConvertible.ToInt16(IFormatProvider provider)
        {
            //.maxstack  8
            //IL_0000:  ldarg.0
            //IL_0001:  ldind.u1
            //IL_0002:  call       int16 System.Convert::ToInt16(uint8)
            //IL_0007:  ret
            return Convert.ToInt16(this);
        }
        private new virtual sealed ushort IConvertible.ToUInt16(IFormatProvider provider)
        {
            //.maxstack  8
            //IL_0000:  ldarg.0
            //IL_0001:  ldind.u1
            //IL_0002:  call       uint16 System.Convert::ToUInt16(uint8)
            //IL_0007:  ret
            return Convert.ToUInt16(this);
        }
        private new virtual sealed int IConvertible.ToInt32(IFormatProvider provider)
        {
            //.maxstack  8
            //IL_0000:  ldarg.0
            //IL_0001:  ldind.u1
            //IL_0002:  call       int32 System.Convert::ToInt32(uint8)
            //IL_0007:  ret
            return Convert.ToInt32(this);
        }
        private new virtual sealed uint IConvertible.ToUInt32(IFormatProvider provider)
        {
            //.maxstack  8
            //IL_0000:  ldarg.0
            //IL_0001:  ldind.u1
            //IL_0002:  call       uint32 System.Convert::ToUInt32(uint8)
            //IL_0007:  ret
            return Convert.ToUInt32(this);
        }
        private new virtual sealed long IConvertible.ToInt64(IFormatProvider provider)
        {
            //.maxstack  8
            //IL_0000:  ldarg.0
            //IL_0001:  ldind.u1
            //IL_0002:  call       int64 System.Convert::ToInt64(uint8)
            //IL_0007:  ret
            return Convert.ToInt64(this);
        }
        private new virtual sealed ulong IConvertible.ToUInt64(IFormatProvider provider)
        {
            //.maxstack  8
            //IL_0000:  ldarg.0
            //IL_0001:  ldind.u1
            //IL_0002:  call       uint64 System.Convert::ToUInt64(uint8)
            //IL_0007:  ret
            return Convert.ToUInt64(this);
        }
        private new virtual sealed float IConvertible.ToSingle(IFormatProvider provider)
        {
            //.maxstack  8
            //IL_0000:  ldarg.0
            //IL_0001:  ldind.u1
            //IL_0002:  call       float32 System.Convert::ToSingle(uint8)
            //IL_0007:  ret
            return Convert.ToSingle(this);
        }
        private new virtual sealed double IConvertible.ToDouble(IFormatProvider provider)
        {
            //.maxstack  8
           //IL_0000:  ldarg.0
            //IL_0001:  ldind.u1
            //IL_0002:  call       float64 System.Convert::ToDouble(uint8)
            //IL_0007:  ret
            return Convert.ToDouble(this);
        }
        private new virtual sealed System.Decimal IConvertible.ToDecimal(IFormatProvider provider)
        {
            //.maxstack  8
            //IL_0000:  ldarg.0
            //IL_0001:  ldind.u1
            //IL_0002:  call       valuetype System.Decimal System.Convert::ToDecimal(uint8)
            //IL_0007:  ret
            return Convert.ToDecimal(this);
        }
        private new virtual sealed System.DateTime IConvertible.ToDateTime(IFormatProvider provider)
        {
            //.maxstack  5
            //.locals init (object[] V_0)
            //IL_0000:  call       class System.Globalization.CultureInfo System.Globalization.CultureInfo::get_CurrentCulture()
            //IL_0005:  ldstr      "InvalidCast_FromTo"
            //IL_000a:  call       string System.Environment::GetResourceString(string)
            //IL_000f:  ldc.i4.2
            //IL_0010:  newarr     System.Object
            //IL_0015:  stloc.0
            //IL_0016:  ldloc.0
            //IL_0017:  ldc.i4.0
            //IL_0018:  ldstr      "Byte"
            //IL_001d:  stelem.ref
            //IL_001e:  ldloc.0
            //IL_001f:  ldc.i4.1
            //IL_0020:  ldstr      "DateTime"
            //IL_0025:  stelem.ref
            //IL_0026:  ldloc.0
            //IL_0027:  call       string System.String::Format(class System.IFormatProvider,
            //                                                    string,
            //                                                    object[])
            //IL_002c:  newobj     instance void System.InvalidCastException::.ctor(string)
            //IL_0031:  throw
            object[] V_0;
            V_0[0]="Byte";
            V_0[1] = "DateTime";
            throw new InvalidCastException(String.Format(CultureInfo.CurrentCulture,Environment.GetResourceString("InvalidCast_FromTo"),V_0));
        }
        private new virtual sealed object IConvertible.ToType(System.Type @type, IFormatProvider provider)
        {
            //.maxstack  8
            //IL_0000:  ldarg.0
            //IL_0001:  ldind.u1
            //IL_0002:  box        System.Byte
            //IL_0007:  ldarg.1
            //IL_0008:  ldarg.2
            //IL_0009:  call       object System.Convert::DefaultToType(class System.IConvertible,
            //                                                          class System.Type,
            //                                                          class System.IFormatProvider)
            //IL_000e:  ret
            return Convert.DefaultToType((object)this,@type,provider);
        }
    }
}

转载于:https://www.cnblogs.com/MSIL/articles/1811122.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值