System.Single
using System.Globalization;
using System.Runtime.InteropServices;
namespace System
{
[StructLayout(LayoutKind.Sequential),Serializable]
[ComVisible(true)]
public struct Single:System.IComparable,System.IFormattable,System.IConvertible,System.IComparable<float>,System.IEquatable<float>
{
public const float MinValue = -3.4028235e+038f; //=-(2-1/(2^23))*2^127
public const float Epsilon = 1.4012985e-045f; //所能表示的最小正数=1/(2^23)*2^-126
public const float MaxValue = 3.4028235e+038f; //=(2-1/(2^23))*2^127
public const float PositiveInfinity = System.BitConverter.ToSingle(System.BitConverter.GetBytes(0x7F800000),0);//符号位0指数位全为1,尾数位全为0
public const float NegativeInfinity = System.BitConverter.ToSingle(System.BitConverter.GetBytes(0xFF800000), 0);//符号位1指数位全为1,尾数位全为0
public const float NaN = System.BitConverter.ToSingle(System.BitConverter.GetBytes(0xFFC00000), 0);//符号位1指数位全为1,尾数位第一位为1其余全为0
internal float m_value;
public static bool IsInfinity(float f)
{
// 代码大小 18 (0x12)
//.maxstack 8
//IL_0000: ldarga.s f
//IL_0002: conv.u
//IL_0003: ldind.i4
//IL_0004: ldc.i4 0x7fffffff
//IL_0009: and
//IL_000a: ldc.i4 0x7f800000
//IL_000f: ceq
//IL_0011: ret
//最高位为符号位,后续8位为正偏127的以8位无符号数表示的以2为底的指数,最后23位为无符号的尾数
return (*((int*)&f) & 0x7fffffff) == 0x7f800000;
}
public static bool IsPositiveInfinity(float f)
{
// 代码大小 12 (0xc)
//.maxstack 8
//IL_0000: ldarga.s f
//IL_0002: conv.u
//IL_0003: ldind.i4
//IL_0004: ldc.i4 0x7f800000
//IL_0009: ceq
//IL_000b: ret
return *((int*)&f) == 0x7f800000;
}
public static bool IsNegativeInfinity(float f)
{
// 代码大小 12 (0xc)
//.maxstack 8
//IL_0000: ldarga.s f
//IL_0002: conv.u
//IL_0003: ldind.i4
//IL_0004: ldc.i4 0xff800000
//IL_0009: ceq
//IL_000b: ret
return *((int*)&f) == 0xff800000;
}
[System.Runtime.ConstrainedExecution.ReliabilityContractAttribute(System.Runtime.ConstrainedExecution.Consistency.WillNotCorruptState,System.Runtime.ConstrainedExecution.Cer.Success)]
public static bool IsNaN(float f)
{
// 代码大小 8 (0x8)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldarg.0
//IL_0002: beq.s IL_0006
//IL_0004: ldc.i4.1
//IL_0005: ret
//IL_0006: ldc.i4.0
//IL_0007: ret
//NaN is not equal to anything even itself.
return f == f ? false : true;
}
public new virtual sealed int32 CompareTo(object @value)
{
// 代码大小 80 (0x50)
//.maxstack 2
//.locals init (float32 V_0)
//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.Single
//IL_000b: brfalse.s IL_0040
//IL_000d: ldarg.1
//IL_000e: unbox.any System.Single
//IL_0013: stloc.0
//IL_0014: ldarg.0
//IL_0015: ldind.r4
//IL_0016: ldloc.0
//IL_0017: bge.un.s IL_001b
//IL_0019: ldc.i4.m1
//IL_001a: ret
//IL_001b: ldarg.0
//IL_001c: ldind.r4
//IL_001d: ldloc.0
//IL_001e: ble.un.s IL_0022
//IL_0020: ldc.i4.1
//IL_0021: ret
//IL_0022: ldarg.0
//IL_0023: ldind.r4
//IL_0024: ldloc.0
//IL_0025: bne.un.s IL_0029
//IL_0027: ldc.i4.0
//IL_0028: ret
//IL_0029: ldarg.0
//IL_002a: ldind.r4
//IL_002b: call bool System.Single::IsNaN(float32)
//IL_0030: brfalse.s IL_003e
//IL_0032: ldloc.0
//IL_0033: call bool System.Single::IsNaN(float32)
//IL_0038: brtrue.s IL_003c
//IL_003a: ldc.i4.m1
//IL_003b: ret
//IL_003c: ldc.i4.0
//IL_003d: ret
//IL_003e: ldc.i4.1
//IL_003f: ret
//IL_0040: ldstr "Arg_MustBeSingle"
//IL_0045: call string System.Environment::GetResourceString(string)
//IL_004a: newobj instance void System.ArgumentException::.ctor(string)
//IL_004f: throw
float V_0;
if(@value==null)
{
return 1;
}
else
{
if(@value as float==null)
{
//IL_0040
throw new System.ArgumentException(System.Environment.GetResourceString("Arg_MustBeSingle"));
}
else
{
//IL_000d
V_0=(float)@value;
if(this>=V_0)
{
if(this<=V_0)
{
//IL_0022
if(this!=V_0)
{
//IL_0029
if(float.IsNaN(this))
{
if(float.IsNaN(V_0))
{
return 0;
}
else
{
return -1;
}
}
else
{
return 1;
}
}
else
{
return 0;
}
}
else
{
return 1;
}
}
else
{
return -1;
}
}
}
}
public new virtual sealed int CompareTo(float @value)
{
// 代码大小 44 (0x2c)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.r4
//IL_0002: ldarg.1
//IL_0003: bge.un.s IL_0007
//IL_0005: ldc.i4.m1
//IL_0006: ret
//IL_0007: ldarg.0
//IL_0008: ldind.r4
//IL_0009: ldarg.1
//IL_000a: ble.un.s IL_000e
//IL_000c: ldc.i4.1
//IL_000d: ret
//IL_000e: ldarg.0
//IL_000f: ldind.r4
//IL_0010: ldarg.1
//IL_0011: bne.un.s IL_0015
//IL_0013: ldc.i4.0
//IL_0014: ret
//IL_0015: ldarg.0
//IL_0016: ldind.r4
//IL_0017: call bool System.Single::IsNaN(float32)
//IL_001c: brfalse.s IL_002a
//IL_001e: ldarg.1
//IL_001f: call bool System.Single::IsNaN(float32)
//IL_0024: brtrue.s IL_0028
//IL_0026: ldc.i4.m1
//IL_0027: ret
//IL_0028: ldc.i4.0
//IL_0029: ret
//IL_002a: ldc.i4.1
//IL_002b: ret
if(this>=@value)
{
if(this<=@value)
{
if(this!=@value)
{
//IL_0015
if(float.IsNaN(this))
{
if(float.IsNaN(@value))
{
return 0;
}
else
{return -1;
}
}
else
{
return 1;
}
}
else
{
return 0;
}
}
else
{
return 1;
}
}
else
{
return -1;
}
}
public override bool Equals(object obj)
{
// 代码大小 42 (0x2a)
//.maxstack 2
//.locals init (float32 V_0)
//IL_0000: ldarg.1
//IL_0001: isinst System.Single
//IL_0006: brtrue.s IL_000a
//IL_0008: ldc.i4.0
//IL_0009: ret
//IL_000a: ldarg.1
//IL_000b: unbox.any System.Single
//IL_0010: stloc.0
//IL_0011: ldloc.0
//IL_0012: ldarg.0
//IL_0013: ldind.r4
//IL_0014: bne.un.s IL_0018
//IL_0016: ldc.i4.1
//IL_0017: ret
//IL_0018: ldloc.0
//IL_0019: call bool System.Single::IsNaN(float32)
//IL_001e: brfalse.s IL_0028
//IL_0020: ldarg.0
//IL_0021: ldind.r4
//IL_0022: call bool System.Single::IsNaN(float32)
//IL_0027: ret
//IL_0028: ldc.i4.0
//IL_0029: ret
float V_0;
if (obj as float == null)
{
return false;
}
else
{
V_0=(float)obj;
if (V_0 != this)
{
if (float.IsNaN(V_0))
{
return float.IsNaN(this);
}
else
{
return false;
}
}
else { return true; }
}
}
public new virtual sealed bool Equals(float obj)
{
// 代码大小 25 (0x19)
//.maxstack 8
//IL_0000: ldarg.1
//IL_0001: ldarg.0
//IL_0002: ldind.r4
//IL_0003: bne.un.s IL_0007
//IL_0005: ldc.i4.1
//IL_0006: ret
//IL_0007: ldarg.1
//IL_0008: call bool System.Single::IsNaN(float32)
//IL_000d: brfalse.s IL_0017
//IL_000f: ldarg.0
//IL_0010: ldind.r4
//IL_0011: call bool System.Single::IsNaN(float32)
//IL_0016: ret
//IL_0017: ldc.i4.0
//IL_0018: ret
if (obj != this)
{
if (float.IsNaN(obj))
{
return float.IsNaN(this);
}
else
{
return false;
}
}
else
{
return true;
}
}
public override int GetHashCode()
{
// 代码大小 20 (0x14)
//.maxstack 2
//.locals init (float32 V_0,
// int32 V_1)
//IL_0000: ldarg.0
//IL_0001: ldind.r4
//IL_0002: stloc.0
//IL_0003: ldloc.0
//IL_0004: ldc.r4 0.0
//IL_0009: bne.un.s IL_000d
//IL_000b: ldc.i4.0
//IL_000c: ret
//IL_000d: ldloca.s V_0
//IL_000f: conv.u
//IL_0010: ldind.i4
//IL_0011: stloc.1
//IL_0012: ldloc.1
//IL_0013: ret
float V_0;
int V_1;
V_0 = this;
if (V_0 != 0.0f)
{
V_1=*((int*)&V_0);
return V_1;
}
else
{
return 0;
}
}
public override string ToString()
{
// 代码大小 14 (0xe)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.r4
//IL_0002: ldnull
//IL_0003: call class System.Globalization.NumberFormatInfo System.Globalization.NumberFormatInfo::get_CurrentInfo()
//IL_0008: call string System.Number::FormatSingle(float32,
// string,
// class System.Globalization.NumberFormatInfo)
//IL_000d: ret
return System.Number.FormatSingle(this,null,NumberFormatInfo.CurrentInfo);
}
public new virtual sealed string ToString(System.IFormatProvider provider)
{
// 代码大小 15 (0xf)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.r4
//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::FormatSingle(float32,
// string,
// class System.Globalization.NumberFormatInfo)
//IL_000e: ret
return System.Number.FormatSingle(this, null, NumberFormatInfo.GetInstance(provider));
}
public string ToString(string format)
{
// 代码大小 14 (0xe)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.r4
//IL_0002: ldarg.1
//IL_0003: call class System.Globalization.NumberFormatInfo System.Globalization.NumberFormatInfo::get_CurrentInfo()
//IL_0008: call string System.Number::FormatSingle(float32,
// string,
// class System.Globalization.NumberFormatInfo)
//IL_000d: ret
return System.Number.FormatSingle(this, format, NumberFormatInfo.CurrentInfo);
}
public new virtual sealed string ToString(string format,System.IFormatProvider provider)
{
// 代码大小 15 (0xf)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.r4
//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::FormatSingle(float32,
// string,
// class System.Globalization.NumberFormatInfo)
//IL_000e: ret
return System.Number.FormatSingle(this, format, NumberFormatInfo.GetInstance(provider));
}
public static float Parse(string s)
{
// 代码大小 17 (0x11)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldc.i4 0xe7
//IL_0006: call class System.Globalization.NumberFormatInfo System.Globalization.NumberFormatInfo::get_CurrentInfo()
//IL_000b: call float32 System.Single::Parse(string,
// valuetype System.Globalization.NumberStyles,
// class System.Globalization.NumberFormatInfo)
//IL_0010: ret
return System.Single.Parse(s, NumberStyles.AllowThousands|NumberStyles.Float, NumberFormatInfo.CurrentInfo);
}
public static float Parse(string s,System.Globalization.NumberStyles style)
{
// 代码大小 19 (0x13)
//.maxstack 8
//IL_0000: ldarg.1
//IL_0001: call void System.Globalization.NumberFormatInfo::ValidateParseStyleFloatingPoint(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 float32 System.Single::Parse(string,
// valuetype System.Globalization.NumberStyles,
// class System.Globalization.NumberFormatInfo)
//IL_0012: ret
NumberFormatInfo.ValidateParseStyleFloatingPoint(style);
return System.Single.Parse(s, style, NumberFormatInfo.CurrentInfo);
}
public static float Parse(string s,System.IFormatProvider provider)
{
// 代码大小 18 (0x12)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldc.i4 0xe7
//IL_0006: ldarg.1
//IL_0007: call class System.Globalization.NumberFormatInfo System.Globalization.NumberFormatInfo::GetInstance(class System.IFormatProvider)
//IL_000c: call float32 System.Single::Parse(string,
// valuetype System.Globalization.NumberStyles,
// class System.Globalization.NumberFormatInfo)
//IL_0011: ret
return System.Single.Parse(s, NumberStyles.AllowThousands | NumberStyles.Float, NumberFormatInfo.GetInstance(provider));
}
public static float 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::ValidateParseStyleFloatingPoint(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 float32 System.Single::Parse(string,
// valuetype System.Globalization.NumberStyles,
// class System.Globalization.NumberFormatInfo)
//IL_0013: ret
NumberFormatInfo.ValidateParseStyleFloatingPoint(style);
return System.Single.Parse(s, style, NumberFormatInfo.GetInstance(provider));
}
private static float Parse(string s,System.Globalization.NumberStyles style,System.Globalization.NumberFormatInfo info)
{
// 代码大小 89 (0x59)
//.maxstack 3
//.locals init (string V_0,
// float32 V_1)
//.try
//{
// IL_0000: ldarg.0
// IL_0001: ldarg.1
// IL_0002: ldarg.2
// IL_0003: call float32 System.Number::ParseSingle(string,
// valuetype System.Globalization.NumberStyles,
// class System.Globalization.NumberFormatInfo)
// IL_0008: stloc.1
// IL_0009: leave.s IL_0057
//} // end .try
//catch System.FormatException
//{
// IL_000b: pop
// IL_000c: ldarg.0
// IL_000d: callvirt instance string System.String::Trim()
// IL_0012: stloc.0
// IL_0013: ldloc.0
// IL_0014: ldarg.2
// IL_0015: callvirt instance string System.Globalization.NumberFormatInfo::get_PositiveInfinitySymbol()
// IL_001a: callvirt instance bool System.String::Equals(string)
// IL_001f: brfalse.s IL_0029
// IL_0021: ldc.r4 (00 00 80 7F)
// IL_0026: stloc.1
// IL_0027: leave.s IL_0057
// IL_0029: ldloc.0
// IL_002a: ldarg.2
// IL_002b: callvirt instance string System.Globalization.NumberFormatInfo::get_NegativeInfinitySymbol()
// IL_0030: callvirt instance bool System.String::Equals(string)
// IL_0035: brfalse.s IL_003f
// IL_0037: ldc.r4 (00 00 80 FF)
// IL_003c: stloc.1
// IL_003d: leave.s IL_0057
// IL_003f: ldloc.0
// IL_0040: ldarg.2
// IL_0041: callvirt instance string System.Globalization.NumberFormatInfo::get_NaNSymbol()
// IL_0046: callvirt instance bool System.String::Equals(string)
// IL_004b: brfalse.s IL_0055
// IL_004d: ldc.r4 (00 00 C0 FF)
// IL_0052: stloc.1
// IL_0053: leave.s IL_0057
// IL_0055: rethrow
//} // end handler
//IL_0057: ldloc.1
//IL_0058: ret
string V_0;
float V_1;
try
{
V_1 = System.Number.ParseSingle(s, style, info);
}
catch (System.FormatException)
{
//IL_000b:
V_0=s.Trim();
if(V_0.Equals(info.PositiveInfinitySymbol))
{
V_1 = float.PositiveInfinity;
}
else
{
//IL_0029
if (V_0.Equals(info.NegativeInfinitySymbol))
{
V_1 = float.NegativeInfinity;
}
else
{
if (V_0.Equals(info.NaNSymbol))
{
V_1 = float.NaN;
}
else
{
throw;
}
}
}
}
return V_1;
}
public static bool TryParse(string s,out float result)
{
// 代码大小 18 (0x12)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldc.i4 0xe7
//IL_0006: call class System.Globalization.NumberFormatInfo System.Globalization.NumberFormatInfo::get_CurrentInfo()
//IL_000b: ldarg.1
//IL_000c: call bool System.Single::TryParse(string,
// valuetype System.Globalization.NumberStyles,
// class System.Globalization.NumberFormatInfo,
// float32&)
//IL_0011: ret
return System.Single.TryParse(s,NumberStyles.AllowThousands | NumberStyles.Float,NumberFormatInfo.CurrentInfo,out result);
}
public static bool TryParse(string s,System.Globalization.NumberStyles style,System.IFormatProvider provider,out float result)
{
// 代码大小 21 (0x15)
//.maxstack 8
//IL_0000: ldarg.1
//IL_0001: call void System.Globalization.NumberFormatInfo::ValidateParseStyleFloatingPoint(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.Single::TryParse(string,
// valuetype System.Globalization.NumberStyles,
// class System.Globalization.NumberFormatInfo,
// float32&)
//IL_0014: ret
NumberFormatInfo.ValidateParseStyleFloatingPoint(style);
return System.Single.TryParse(s, style, NumberFormatInfo.GetInstance(provider), out result);
}
private static bool TryParse(string s,System.Globalization.NumberStyles style,System.Globalization.NumberFormatInfo info,out float result)
{
// 代码大小 105 (0x69)
//.maxstack 4
//.locals init (bool V_0,
// string V_1)
//IL_0000: ldarg.0
//IL_0001: brtrue.s IL_000c
//IL_0003: ldarg.3
//IL_0004: ldc.r4 0.0
//IL_0009: stind.r4
//IL_000a: ldc.i4.0
//IL_000b: ret
//IL_000c: ldarg.0
//IL_000d: ldarg.1
//IL_000e: ldarg.2
//IL_000f: ldarg.3
//IL_0010: call bool System.Number::TryParseSingle(string,
// valuetype System.Globalization.NumberStyles,
// class System.Globalization.NumberFormatInfo,
// float32&)
//IL_0015: stloc.0
//IL_0016: ldloc.0
//IL_0017: brtrue.s IL_0067
//IL_0019: ldarg.0
//IL_001a: callvirt instance string System.String::Trim()
//IL_001f: stloc.1
//IL_0020: ldloc.1
//IL_0021: ldarg.2
//IL_0022: callvirt instance string System.Globalization.NumberFormatInfo::get_PositiveInfinitySymbol()
//IL_0027: callvirt instance bool System.String::Equals(string)
//IL_002c: brfalse.s IL_0037
//IL_002e: ldarg.3
//IL_002f: ldc.r4 (00 00 80 7F)
//IL_0034: stind.r4
//IL_0035: br.s IL_0067
//IL_0037: ldloc.1
//IL_0038: ldarg.2
//IL_0039: callvirt instance string System.Globalization.NumberFormatInfo::get_NegativeInfinitySymbol()
//IL_003e: callvirt instance bool System.String::Equals(string)
//IL_0043: brfalse.s IL_004e
//IL_0045: ldarg.3
//IL_0046: ldc.r4 (00 00 80 FF)
//IL_004b: stind.r4
//IL_004c: br.s IL_0067
//IL_004e: ldloc.1
//IL_004f: ldarg.2
//IL_0050: callvirt instance string System.Globalization.NumberFormatInfo::get_NaNSymbol()
//IL_0055: callvirt instance bool System.String::Equals(string)
//IL_005a: brfalse.s IL_0065
//IL_005c: ldarg.3
//IL_005d: ldc.r4 (00 00 C0 FF)
//IL_0062: stind.r4
//IL_0063: br.s IL_0067
//IL_0065: ldc.i4.0
//IL_0066: ret
//IL_0067: ldc.i4.1
//IL_0068: ret
bool V_0;
string V_1;
if(s==null)
{
result=0.0f;
return false;
}
else
{
V_0=System.Number.TryParseSingle(s,style,info,out result);
if(V_0)
{
return true;
}
else
{
//IL_0019
V_1=s.Trim();
if(V_1.Equals(info.PositiveInfinitySymbol))
{
result=float.PositiveInfinity;
}
else if (V_1.Equals(info.NegativeInfinitySymbol))
{
result = float.NegativeInfinity;
}
else if (V_1.Equals(info.NaNSymbol))
{
result = float.NaN;
}
else
{
return false;
}
return true;
}
}
}
public new virtual sealed System.TypeCode GetTypeCode()
{
// 代码大小 3 (0x3)
//.maxstack 8
//IL_0000: ldc.i4.s 13
//IL_0002: ret
return TypeCode.Single;
}
private new virtual sealed bool System.IConvertible.ToBoolean(System.IFormatProvider provider)
{
// 代码大小 8 (0x8)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.r4
//IL_0002: call bool System.Convert::ToBoolean(float32)
//IL_0007: ret
return System.Convert.ToBoolean(this);
}
private new virtual sealed char System.IConvertible.ToChar(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 "Single"
//IL_001d: stelem.ref
//IL_001e: ldloc.0
//IL_001f: ldc.i4.1
//IL_0020: ldstr "Char"
//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] = "Single";
V_0[1] = "Char";
throw new System.InvalidCastException(string.Format(CultureInfo.CurrentCulture, System.Environment.GetResourceString("InvalidCast_FromTo"), V_0));
}
private new virtual sealed sbyte System.IConvertible.ToSByte(System.IFormatProvider provider)
{
// 代码大小 8 (0x8)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.r4
//IL_0002: call int8 System.Convert::ToSByte(float32)
//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.r4
//IL_0002: call uint8 System.Convert::ToByte(float32)
//IL_0007: ret
return System.Convert.ToByte(this);
}
private virtual sealed short System.IConvertible.ToInt16(System.IFormatProvider provider)
{
// 代码大小 8 (0x8)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.r4
//IL_0002: call int16 System.Convert::ToInt16(float32)
//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.r4
//IL_0002: call uint16 System.Convert::ToUInt16(float32)
//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.r4
//IL_0002: call int32 System.Convert::ToInt32(float32)
//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.r4
//IL_0002: call uint32 System.Convert::ToUInt32(float32)
//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.r4
//IL_0002: call int64 System.Convert::ToInt64(float32)
//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.r4
//IL_0002: call uint64 System.Convert::ToUInt64(float32)
//IL_0007: ret
return System.Convert.ToUInt64(this);
}
private new virtual sealed float System.IConvertible.ToSingle(System.IFormatProvider provider)
{
// 代码大小 3 (0x3)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.r4
//IL_0002: ret
return this;
}
private new virtual sealed double System.IConvertible.ToDouble(System.IFormatProvider provider)
{
// 代码大小 8 (0x8)
//.maxstack 8
//IL_0000: ldarg.0
//IL_0001: ldind.r4
//IL_0002: call float64 System.Convert::ToDouble(float32)
//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.r4
//IL_0002: call valuetype System.Decimal System.Convert::ToDecimal(float32)
//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 "Single"
//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] = "Single";
V_0[1] = "DateTime";
throw new System.InvalidCastException(string.Format(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.r4
//IL_0002: box System.Single
//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);
}
}
}