System.SByte
using System.Runtime.InteropServices;
using System.Globalization;
namespace System
{
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi), Serializable, ComVisible(true), CLSCompliant(false)]
public struct SByte : IComparable, IFormattable, IConvertible, IComparable<sbyte>, IEquatable<sbyte>
{
public const sbyte MaxValue = (sbyte)0x7F;
public const sbyte MinValue = (sbyte)0x80;
private sbyte m_value;
public new virtual sealed int CompareTo(object obj)
{
//.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.SByte
//IL_000b: brtrue.s IL_001d
//IL_000d: ldstr "Arg_MustBeSByte"
//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.i1
//IL_001f: ldarg.1
//IL_0020: unbox.any System.SByte
//IL_0025: sub
//IL_0026: ret
if (obj!=null)
{
if ((obj as sbyte) == null)
{
throw new ArgumentException(Environment.GetResourceString("Arg_MustBeSByte"));
}
else
{
return(this-(sbyte)obj);
}
}
else
{
return 1;
}
}
public new virtual sealed int CompareTo(sbyte @value)
{
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i1
//IL_0002: ldarg.1
//IL_0003: sub
//IL_0004: ret
return this - @value;
}
public override bool Equals(object obj)
{
//.maxstack 8
//IL_0000: ldarg.1
//IL_0001: isinst System.SByte
//IL_0006: brtrue.s IL_000a
//IL_0008: ldc.i4.0
//IL_0009: ret
//IL_000a: ldarg.0
//IL_000b: ldind.i1
//IL_000c: ldarg.1
//IL_000d: unbox.any System.SByte
//IL_0012: ceq
//IL_0014: ret
if ((obj as sbyte) == null)
{
return false;
}
else
{
return (this == (sbyte)obj);
}
}
public new virtual sealed bool Equals(sbyte obj)
{
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i1
//IL_0002: ldarg.1
//IL_0003: ceq
//IL_0005: ret
return (this==obj);
}
public override int GetHashCode()
{
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i1
//IL_0002: ldarg.0
//IL_0003: ldind.i1
//IL_0004: ldc.i4.8
//IL_0005: shl
//IL_0006: xor
//IL_0007: ret
return (this ^ (this << 8));
}
public override string ToString()
{
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i1
//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(this, null, NumberFormatInfo.CurrentInfo);
}
public new virtual sealed string ToString(IFormatProvider provider)
{
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i1
//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(this, null, NumberFormatInfo.GetInstance(provider));
}
public string ToString(string format)
{
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldarg.1
//IL_0002: call class System.Globalization.NumberFormatInfo System.Globalization.NumberFormatInfo::get_CurrentInfo()
//IL_0007: call instance string System.SByte::ToString(string,
// class System.Globalization.NumberFormatInfo)
//IL_000c: ret
return this.ToString(format, NumberFormatInfo.CurrentInfo);
}
public new virtual sealed string ToString(string format, IFormatProvider provider)
{
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldarg.1
//IL_0002: ldarg.2
//IL_0003: call class System.Globalization.NumberFormatInfo System.Globalization.NumberFormatInfo::GetInstance(class System.IFormatProvider)
//IL_0008: call instance string System.SByte::ToString(string,
// class System.Globalization.NumberFormatInfo)
//IL_000d: ret
return this.ToString(format,NumberFormatInfo.GetInstance(provider));
}
private string ToString(string format, NumberFormatInfo info)
{
//.maxstack 3
//.locals init (uint32 V_0)
//IL_0000: ldarg.0
//IL_0001: ldind.i1
//IL_0002: ldc.i4.0
//IL_0003: bge.s IL_0039
//IL_0005: ldarg.1
//IL_0006: brfalse.s IL_0039
//IL_0008: ldarg.1
//IL_0009: callvirt instance int32 System.String::get_Length()
//IL_000e: ldc.i4.0
//IL_000f: ble.s IL_0039
//IL_0011: ldarg.1
//IL_0012: ldc.i4.0
//IL_0013: callvirt instance char System.String::get_Chars(int32)
//IL_0018: ldc.i4.s 88
//IL_001a: beq.s IL_0027
//IL_001c: ldarg.1
//IL_001d: ldc.i4.0
//IL_001e: callvirt instance char System.String::get_Chars(int32)
//IL_0023: ldc.i4.s 120
//IL_0025: bne.un.s IL_0039
//IL_0027: ldarg.0
//IL_0028: ldind.i1
//IL_0029: ldc.i4 0xff
//IL_002e: and
//IL_002f: stloc.0
//IL_0030: ldloc.0
//IL_0031: ldarg.1
//IL_0032: ldarg.2
//IL_0033: call string System.Number::FormatUInt32(uint32,
// string,
// class System.Globalization.NumberFormatInfo)
//IL_0038: ret
//IL_0039: ldarg.0
//IL_003a: ldind.i1
//IL_003b: ldarg.1
//IL_003c: ldarg.2
//IL_003d: call string System.Number::FormatInt32(int32,
// string,
// class System.Globalization.NumberFormatInfo)
//IL_0042: ret
uint V_0;
if (this < 0 && format != null)
{
//IL_0008
if(format.Length>0)
{
if (format[0] == 'X' || format[0] == 'x')
{
//IL_0027
V_0=(uint)(this&0xff);
return System.Number.FormatUInt32(V_0,format,info);
}
}
}
//IL_0039
return System.Number.FormatInt32(this, format, info);
}
[CLSCompliantAttribute(false)]
public static sbyte Parse(string s)
{
// 代码大小 13 (0xd)
//.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 int8 System.SByte::Parse(string,
// valuetype System.Globalization.NumberStyles,
// class System.Globalization.NumberFormatInfo)
//IL_000c: ret
return System.SByte.Parse(s,NumberStyles.Integer,System.Globalization.NumberFormatInfo.CurrentInfo);
}
[CLSCompliantAttribute(false)]
public static sbyte Parse(string s, System.Globalization.NumberStyles style)
{
// 代码大小 19 (0x13)
//.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 int8 System.SByte::Parse(string,
// valuetype System.Globalization.NumberStyles,
// class System.Globalization.NumberFormatInfo)
//IL_0012: ret
System.Globalization.NumberFormatInfo.ValidateParseStyleInteger(style);
return System.SByte.Parse(s, style, System.Globalization.NumberFormatInfo.CurrentInfo);
}
[CLSCompliantAttribute(false)]
public static sbyte Parse(string s,System.IFormatProvider provider)
{
// 代码大小 14 (0xe)
//.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 int8 System.SByte::Parse(string,
// valuetype System.Globalization.NumberStyles,
// class System.Globalization.NumberFormatInfo)
//IL_000d: ret
return System.SByte.Parse(s, NumberStyles.Integer, System.Globalization.NumberFormatInfo.GetInstance(provider));
}
[CLSCompliantAttribute(false)]
public static sbyte Parse(string s,System.Globalization.NumberStyles style,System.IFormatProvider provider)
{
// 代码大小 20 (0x14)
//.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 int8 System.SByte::Parse(string,
// valuetype System.Globalization.NumberStyles,
// class System.Globalization.NumberFormatInfo)
//IL_0013: ret
System.Globalization.NumberFormatInfo.ValidateParseStyleInteger(style);
return System.SByte.Parse(s, style, System.Globalization.NumberFormatInfo.GetInstance(provider));
}
[CLSCompliantAttribute(false)]
private static sbyte Parse(string s,System.Globalization.NumberStyles style,System.Globalization.NumberFormatInfo info)
{
// 代码大小 100 (0x64)
//.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_SByte"
// 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: ldarg.1
//IL_0020: ldc.i4 0x200
//IL_0025: and
//IL_0026: brfalse.s IL_0047
//IL_0028: ldloc.0
//IL_0029: ldc.i4.0
//IL_002a: blt.s IL_0034
//IL_002c: ldloc.0
//IL_002d: ldc.i4 0xff
//IL_0032: ble.s IL_0044
//IL_0034: ldstr "Overflow_SByte"
//IL_0039: call string System.Environment::GetResourceString(string)
//IL_003e: newobj instance void System.OverflowException::.ctor(string)
//IL_0043: throw
//IL_0044: ldloc.0
//IL_0045: conv.i1
//IL_0046: ret
//IL_0047: ldloc.0
//IL_0048: ldc.i4.s -128
//IL_004a: blt.s IL_0051
//IL_004c: ldloc.0
//IL_004d: ldc.i4.s 127
//IL_004f: ble.s IL_0061
//IL_0051: ldstr "Overflow_SByte"
//IL_0056: call string System.Environment::GetResourceString(string)
//IL_005b: newobj instance void System.OverflowException::.ctor(string)
//IL_0060: throw
//IL_0061: ldloc.0
//IL_0062: conv.i1
//IL_0063: 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_SByte"),V_1);
}
if(style&System.Globalization.NumberStyles.AllowHexSpecifier!=0)
{
//IL_0028
if(V_0>=0&&V_0<=0xff)
{
//IL_0044
return (sbyte)V_0;
}
//IL_0034
throw new System.OverflowException(System.Environment.GetResourceString("Overflow_SByte"));
}
else
{
//IL_0047
if(V_0>=-128&&V_0<=127)
{
return (sbyte)V_0;
}
else
{
throw new System.OverflowException(System.Environment.GetResourceString("Overflow_SByte"));
}
}
}
[CLSCompliantAttribute(false)]
public static bool TryParse(string s,out sbyte result)
{
// 代码大小 14 (0xe)
//.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.SByte::TryParse(string,
// valuetype System.Globalization.NumberStyles,
// class System.Globalization.NumberFormatInfo,
// int8&)
//IL_000d: ret
return System.SByte.TryParse(s,System.Globalization.NumberStyles.Integer,System.Globalization.NumberFormatInfo.CurrentInfo,out result);
}
[CLSCompliantAttribute(false)]
public static bool TryParse(string s,System.Globalization.NumberStyles style,System.IFormatProvider provider,out sbyte result)
{
// 代码大小 21 (0x15)
//.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.SByte::TryParse(string,
// valuetype System.Globalization.NumberStyles,
// class System.Globalization.NumberFormatInfo,
// int8&)
//IL_0014: ret
System.Globalization.NumberFormatInfo.ValidateParseStyleInteger(style);
return System.SByte.TryParse(s,style,System.Globalization.NumberFormatInfo.GetInstance(provider),out result);
}
private static bool TryParse(string s,System.Globalization.NumberStyles style,System.Globalization.NumberFormatInfo info,out sbyte result)
{
// 代码大小 64 (0x40)
//.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: ldarg.1
//IL_0012: ldc.i4 0x200
//IL_0017: and
//IL_0018: brfalse.s IL_002e
//IL_001a: ldloc.0
//IL_001b: ldc.i4.0
//IL_001c: blt.s IL_0026
//IL_001e: ldloc.0
//IL_001f: ldc.i4 0xff
//IL_0024: ble.s IL_0028
//IL_0026: ldc.i4.0
//IL_0027: ret
//IL_0028: ldarg.3
//IL_0029: ldloc.0
//IL_002a: conv.i1
//IL_002b: stind.i1
//IL_002c: ldc.i4.1
//IL_002d: ret
//IL_002e: ldloc.0
//IL_002f: ldc.i4.s -128
//IL_0031: blt.s IL_0038
//IL_0033: ldloc.0
//IL_0034: ldc.i4.s 127
//IL_0036: ble.s IL_003a
//IL_0038: ldc.i4.0
//IL_0039: ret
//IL_003a: ldarg.3
//IL_003b: ldloc.0
//IL_003c: conv.i1
//IL_003d: stind.i1
//IL_003e: ldc.i4.1
//IL_003f: ret
int V_0;
result=(sbyte)0;
if(System.Number.TryParseInt32(s,style,info,out V_0))
{
//IL_0011
if(style&System.Globalization.NumberStyles.AllowHexSpecifier==0)
{
//IL_002e
if(V_0>=-128&&V_0<=127)
{
result=(sbyte)V_0;
return true;
}
}
else
{
if(V_0>=0&&V_0<=0xff)
{
//IL_0028
result=(sbyte)V_0;
return true;
}
}
}
return false;
}
public new virtual sealed System.TypeCode GetTypeCode()
{
// 代码大小 2 (0x2)
//.maxstack 8
//IL_0000: ldc.i4.5
//IL_0001: ret
return System.TypeCode.SByte;
}
private new virtual sealed bool System.IConvertible.ToBoolean(System.IFormatProvider provider)
{
// 代码大小 8 (0x8)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i1
//IL_0002: call bool System.Convert::ToBoolean(int8)
//IL_0007: ret
return System.Convert.ToBoolean(this);
}
private new virtual sealed char System.IConvertible.ToChar(System.IFormatProvider provider)
{
// 代码大小 8 (0x8)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i1
//IL_0002: call char System.Convert::ToChar(int8)
//IL_0007: ret
return System.Convert.ToChar(this);
}
private new virtual sealed sbyte System.IConvertible.ToSByte(System.IFormatProvider provider)
{
// 代码大小 3 (0x3)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i1
//IL_0002: ret
return this;
}
private new virtual sealed byte System.IConvertible.ToByte(System.IFormatProvider provider)
{
// 代码大小 8 (0x8)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i1
//IL_0002: call uint8 System.Convert::ToByte(int8)
//IL_0007: ret
return System.Convert.ToByte(this);
}
private new virtual sealed short System.IConvertible.ToInt16(System.IFormatProvider provider)
{
// 代码大小 8 (0x8)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i1
//IL_0002: call int16 System.Convert::ToInt16(int8)
//IL_0007: ret
return System.Convert.ToInt16(this);
}
private new virtual sealed ushort System.IConvertible.ToUInt16(System.IFormatProvider provider)
{
// 代码大小 8 (0x8)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i1
//IL_0002: call uint16 System.Convert::ToUInt16(int8)
//IL_0007: ret
return System.Convert.ToUInt16(this);
}
private new virtual sealed int System.IConvertible.ToInt32(System.IFormatProvider provider)
{
// 代码大小 3 (0x3)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i1
//IL_0002: ret
return this;
}
private new virtual sealed uint System.IConvertible.ToUInt32(System.IFormatProvider provider)
{
// 代码大小 8 (0x8)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i1
//IL_0002: call uint32 System.Convert::ToUInt32(int8)
//IL_0007: ret
return System.Convert.ToUInt32(this);
}
private new virtual sealed long System.IConvertible.ToInt64(System.IFormatProvider provider)
{
// 代码大小 8 (0x8)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i1
//IL_0002: call int64 System.Convert::ToInt64(int8)
//IL_0007: ret
return System.Convert.ToInt64(this);
}
private new virtual sealed ulong System.IConvertible.ToUInt64(System.IFormatProvider provider)
{
// 代码大小 8 (0x8)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i1
//IL_0002: call uint64 System.Convert::ToUInt64(int8)
//IL_0007: ret
return System.Convert.ToUInt64(this);
}
private new virtual sealed float System.IConvertible.ToSingle(System.IFormatProvider provider)
{
// 代码大小 8 (0x8)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i1
//IL_0002: call float32 System.Convert::ToSingle(int8)
//IL_0007: ret
return System.Convert.ToSingle(this);
}
private new virtual sealed double System.IConvertible.ToDouble(System.IFormatProvider provider)
{
// 代码大小 8 (0x8)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i1
//IL_0002: call float64 System.Convert::ToDouble(int8)
//IL_0007: ret
return System.Convert.ToDouble(this);
}
private new virtual sealed System.Decimal System.IConvertible.ToDecimal(System.IFormatProvider provider)
{
// 代码大小 8 (0x8)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i1
//IL_0002: call valuetype System.Decimal System.Convert::ToDecimal(int8)
//IL_0007: ret
return System.Convert.ToDecimal(this);
}
private new virtual sealed System.DateTime System.IConvertible.ToDateTime(System.IFormatProvider provider)
{
// 代码大小 40 (0x28)
//.maxstack 4
//.locals init (object[] V_0)
//IL_0000: ldstr "InvalidCast_FromTo"
//IL_0005: ldc.i4.2
//IL_0006: newarr System.Object
//IL_000b: stloc.0
//IL_000c: ldloc.0
//IL_000d: ldc.i4.0
//IL_000e: ldstr "SByte"
//IL_0013: stelem.ref
//IL_0014: ldloc.0
//IL_0015: ldc.i4.1
//IL_0016: ldstr "DateTime"
//IL_001b: stelem.ref
//IL_001c: ldloc.0
//IL_001d: call string System.Environment::GetResourceString(string,
// object[])
//IL_0022: newobj instance void System.InvalidCastException::.ctor(string)
//IL_0027: throw
object[] V_0;
V_0=new object[2];
V_0[0]="SByte";
V_0[1]="DateTime";
throw new System.InvalidCastException(System.Environment.GetResourceString("InvalidCast_FromTo",V_0));
}
private new virtual sealed object System.IConvertible.ToType(System.Type @type,System.IFormatProvider provider)
{
//// 代码大小 15 (0xf)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i1
//IL_0002: box System.SByte
//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 System.Convert.DefaultToType((object)this,@type,provider);
}
}
}