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