using System.Runtime.InteropServices;
using System.Globalization;
namespace System
{
[StructLayout(LayoutKind.Sequential),Serializable,ComVisible(true)]
public struct Int16:System.IComparable,System.IFormattable,System.IConvertible,System.IComparable<short>,System.IEquatable<short>
{
public const short MaxValue = (int16)0x7FFF;
public const short MinValue = (int16)0x8000;
internal short m_value;
public new virtual sealed int CompareTo(object @value)
{
// 代码大小 39 (0x27)
//.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.Int16
//IL_000b: brfalse.s IL_0017
//IL_000d: ldarg.0
//IL_000e: ldind.i2
//IL_000f: ldarg.1
//IL_0010: unbox.any System.Int16
//IL_0015: sub
//IL_0016: ret
//IL_0017: ldstr "Arg_MustBeInt16"
//IL_001c: call string System.Environment::GetResourceString(string)
//IL_0021: newobj instance void System.ArgumentException::.ctor(string)
//IL_0026: throw
if (@value == null)
{
return 1;
}
else
{
if (@value as short == null)
{
throw new System.ArgumentException(System.Environment.GetResourceString("Arg_MustBeInt16"));
}
else
{
return this - (short)@value;
}
}
}
public new virtual sealed int CompareTo(short @value)
{
// 代码大小 5 (0x5)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i2
//IL_0002: ldarg.1
//IL_0003: sub
//IL_0004: ret
return this-@value;
}
public virtual bool Equals(object obj)
{
// 代码大小 21 (0x15)
//.maxstack 8
//IL_0000: ldarg.1
//IL_0001: isinst System.Int16
//IL_0006: brtrue.s IL_000a
//IL_0008: ldc.i4.0
//IL_0009: ret
//IL_000a: ldarg.0
//IL_000b: ldind.i2
//IL_000c: ldarg.1
//IL_000d: unbox.any System.Int16
//IL_0012: ceq
//IL_0014: ret
if (obj as Int16 == null)
{
return 0;
}
else
{
return(this == (short)obj);
}
}
public new virtual sealed bool Equals(short obj)
{
// 代码大小 6 (0x6)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i2
//IL_0002: ldarg.1
//IL_0003: ceq
//IL_0005: ret
return (this==obj);
}
public virtual int GetHashCode()
{
// 代码大小 10 (0xa)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i2
//IL_0002: conv.u2
//IL_0003: ldarg.0
//IL_0004: ldind.i2
//IL_0005: ldc.i4.s 16
//IL_0007: shl
//IL_0008: or
//IL_0009: ret
return (this);
}
public virtual string ToString()
{
// 代码大小 14 (0xe)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i2
//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,System.Globalization.NumberFormatInfo.CurrentInfo);
}
public new virtual sealed string ToString(System.IFormatProvider provider)
{
// 代码大小 15 (0xf)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i2
//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
System.Number.FormatInt32return(this, null, System.Globalization.NumberFormatInfo.GetInstance(provider));
}
public string ToString(string format)
{
// 代码大小 13 (0xd)
//.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.Int16::ToString(string,
// class System.Globalization.NumberFormatInfo)
//IL_000c: ret
return this.ToString(format,System.Globalization.NumberFormatInfo.CurrentInfo);
}
public new virtual sealed string ToString(string format,System.IFormatProvider provider)
{
// 代码大小 14 (0xe)
//.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.Int16::ToString(string,
// class System.Globalization.NumberFormatInfo)
//IL_000d: ret
return this.ToString(format, NumberFormatInfo.GetInstance(provider));
}
private string ToString(string format,System.Globalization.NumberFormatInfo info)
{
// 代码大小 67 (0x43)
//.maxstack 3
//.locals init (uint32 V_0)
//IL_0000: ldarg.0
//IL_0001: ldind.i2
//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.i2
//IL_0029: ldc.i4 0xffff
//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.i2
//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&&format.Length>0)
{
if (format[0] == 'X' || format[0] == 'x')
{
//IL_0027
V_0 = this & 0xffff;
return System.Number.FormatUInt32(V_0, format, info);
}
}
//IL_0039
return System.Number.FormatInt32(this, format, info);
}
public static short 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 int16 System.Int16::Parse(string,
// valuetype System.Globalization.NumberStyles,
// class System.Globalization.NumberFormatInfo)
//IL_000c: ret
return System.Int16.Parse(s, NumberStyles.Integer, System.Globalization.NumberFormatInfo.CurrentInfo);
}
public static short 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 int16 System.Int16::Parse(string,
// valuetype System.Globalization.NumberStyles,
// class System.Globalization.NumberFormatInfo)
//IL_0012: ret
NumberFormatInfo.ValidateParseStyleInteger(style);
return System.Int16.Parse(s, style, NumberFormatInfo.CurrentInfo);
}
public static short 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 int16 System.Int16::Parse(string,
// valuetype System.Globalization.NumberStyles,
// class System.Globalization.NumberFormatInfo)
//IL_000d: ret
return System.Int16.Parse(s, NumberStyles.Integer, NumberFormatInfo.GetInstance(provider));
}
public static short 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 int16 System.Int16::Parse(string,
// valuetype System.Globalization.NumberStyles,
// class System.Globalization.NumberFormatInfo)
//IL_0013: ret
NumberFormatInfo.ValidateParseStyleInteger(stle);
return System.Int16.Parse(s,style,NumberFormatInfo.GetInstance(provider));
}
private static short Parse(string s,System.Globalization.NumberStyles style,System.Globalization.NumberFormatInfo info)
{
// 代码大小 106 (0x6a)
//.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_Int16"
// 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 0xffff
//IL_0032: ble.s IL_0044
//IL_0034: ldstr "Overflow_Int16" throw
//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.i2
//IL_0046: ret
//IL_0047: ldloc.0
//IL_0048: ldc.i4 0xffff8000
//IL_004d: blt.s IL_0057
//IL_004f: ldloc.0
//IL_0050: ldc.i4 0x7fff
//IL_0055: ble.s IL_0067
//IL_0057: ldstr "Overflow_Int16"
//IL_005c: call string System.Environment::GetResourceString(string)
//IL_0061: newobj instance void System.OverflowException::.ctor(string)
//IL_0066: throw
//IL_0067: ldloc.0
//IL_0068: conv.i2
//IL_0069: ret
int32 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_Int16"), V_1);
}
if (style & (NumberStyles.AllowTrailingSign | NumberStyles.AllowThousands | NumberStyles.AllowExponent)==0)
{
//IL_0047
if (V_0 >= 0xffff8000 && V_0 <= 0x7fff)
{
return (short)V_0;
}
else
{
throw new System.OverflowException(System.Environment.GetResourceString("Overflow_Int16"));
}
}
else
{
//IL_0028
if (V_0 >= 0 && V_0 <= 0xffff)
{
return (short)V_0;
}
else
{
throw new System.OverflowException(System.Environment.GetResourceString("Overflow_Int16"));
}
}
}
public static bool TryParse(string s,out short 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.Int16::TryParse(string,
// valuetype System.Globalization.NumberStyles,
// class System.Globalization.NumberFormatInfo,
// int16&)
//IL_000d: ret
return System.Int16.TryParse(s,NumberStyles.Integer,NumberFormatInfo.CurrentInfo,out result);
}
public static bool TryParse(string s,System.Globalization.NumberStyles style,System.IFormatProvider provider,out short 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.Int16::TryParse(string,
// valuetype System.Globalization.NumberStyles,
// class System.Globalization.NumberFormatInfo,
// int16&)
//IL_0014: ret
NumberFormatInfo.ValidateParseStyleInteger(style);
return System.Int16.TryParse(s, style, NumberFormatInfo.GetInstance(provider), out result);
}
private static bool TryParse(string s,System.Globalization.NumberStyles style,System.Globalization.NumberFormatInfo info,out short result)
{
// 代码大小 70 (0x46)
//.maxstack 4
//.locals init (int32 V_0)
//IL_0000: ldarg.3
//IL_0001: ldc.i4.0
//IL_0002: stind.i2
//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 0xffff
//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.i2
//IL_002b: stind.i2
//IL_002c: ldc.i4.1
//IL_002d: ret
//IL_002e: ldloc.0
//IL_002f: ldc.i4 0xffff8000
//IL_0034: blt.s IL_003e
//IL_0036: ldloc.0
//IL_0037: ldc.i4 0x7fff
//IL_003c: ble.s IL_0040
//IL_003e: ldc.i4.0
//IL_003f: ret
//IL_0040: ldarg.3
//IL_0041: ldloc.0
//IL_0042: conv.i2
//IL_0043: stind.i2
//IL_0044: ldc.i4.1
//IL_0045: ret
int V_0;
result=0;
if(System.Number.TryParseInt32(s,style,info,out V_0))
{
//IL_0011
if(style&(NumberStyles.AllowTrailingSign | NumberStyles.AllowThousands | NumberStyles.AllowExponent)==0)
{
//IL_002e
if (V_0 >= 0xffff8000 && V_0 <= 0x7fff)
{
result = V_0;
return true;
}
else
{
return false;
}
}
else
{
if(V_0>=0&&V_0<=0xffff)
{
result=V_0;
return true;
}
else
{
return false;
}
}
}
else
{
return false;
}
}
public new virtual sealed System.TypeCode GetTypeCode()
{
// 代码大小 2 (0x2)
//.maxstack 8
//IL_0000: ldc.i4.7
//IL_0001: ret
return TypeCode.Int16;
}
private new virtual sealed bool System.IConvertible.ToBoolean(System.IFormatProvider provider)
{
// 代码大小 8 (0x8)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i2
//IL_0002: call bool System.Convert::ToBoolean(int16)
//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.i2
//IL_0002: call char System.Convert::ToChar(int16)
//IL_0007: ret
return System.Convert.ToChar(this);
}
private new virtual sealed sbyte System.IConvertible.ToSByte(System.IFormatProvider provider)
{
// 代码大小 8 (0x8)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i2
//IL_0002: call int8 System.Convert::ToSByte(int16)
//IL_0007: ret
return System.Convert.ToSByte(this);
}
private new virtual sealed byte System.IConvertible.ToByte(System.IFormatProvider provider)
{
// 代码大小 8 (0x8)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i2
//IL_0002: call uint8 System.Convert::ToByte(int16)
//IL_0007: ret
return System.Convert.ToByte(this);
}
private new virtual sealed short System.IConvertible.ToInt16(System.IFormatProvider provider)
{
// 代码大小 3 (0x3)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i2
//IL_0002: ret
return this;
}
private new virtual sealed ushort System.IConvertible.ToUInt16(System.IFormatProvider provider)
{
// 代码大小 8 (0x8)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i2
//IL_0002: call uint16 System.Convert::ToUInt16(int16)
//IL_0007: ret
return System.Convert.ToUInt16(this);
}
private new virtual sealed int System.IConvertible.ToInt32(System.IFormatProvider provider)
{
// 代码大小 8 (0x8)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i2
//IL_0002: call int32 System.Convert::ToInt32(int16)
//IL_0007: ret
return System.Convert.ToInt32(this);
}
private new virtual sealed uint System.IConvertible.ToUInt32(System.IFormatProvider provider)
{
// 代码大小 8 (0x8)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.i2
//IL_0002: call uint32 System.Convert::ToUInt32(int16)
//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.i2
//IL_0002: call int64 System.Convert::ToInt64(int16)
//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.i2
//IL_0002: call uint64 System.Convert::ToUInt64(int16)
//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.i2
//IL_0002: call float32 System.Convert::ToSingle(int16)
//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.i2
//IL_0002: call float64 System.Convert::ToDouble(int16)
//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.i2
//IL_0002: call valuetype System.Decimal System.Convert::ToDecimal(int16)
//IL_0007: ret
return System.Convert.ToDecimal(this);
}
private new virtual sealed System.DateTime System.IConvertible.ToDateTime(System.IFormatProvider provider)
{
// 代码大小 50 (0x32)
//.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 "Int16"
//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=new object[2];
V_0[0]="Int16";
V_0[1]="DateTime";
throw new System.InvalidCastException(string.Format(System.Globalization.CultureInfo.CurrentCulture, 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.i2
//IL_0002: box System.Int16
//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((System.IConvertible)this,@type,provider);
}
}
}