本文整理汇总了C#中TypeCode.IsNumeric方法的典型用法代码示例。如果您正苦于以下问题:C# TypeCode.IsNumeric方法的具体用法?C# TypeCode.IsNumeric怎么用?C# TypeCode.IsNumeric使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TypeCode
的用法示例。
在下文中一共展示了TypeCode.IsNumeric方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetNumericOrEnumConversion
/// <summary>
/// 返回将对象从数值类型 <paramref name="inputType"/> 转换为数值类型 <paramref name="outputType"/>
/// 的类型转换。
/// </summary>
/// <param name="inputType">要转换的对象的类型。</param>
/// <param name="inputTypeCode">要转换的对象的类型。</param>
/// <param name="outputType">要将输入对象转换到的类型。</param>
/// <param name="outputTypeCode">要将输入对象转换到的类型。</param>
/// <returns>将对象从 <paramref name="inputType"/> 类型转换为 <paramref name="outputType"/>
/// 类型的类型转换,如果不存在则为 <c>null</c>。</returns>
private static Conversion GetNumericOrEnumConversion(Type inputType, TypeCode inputTypeCode,
Type outputType, TypeCode outputTypeCode)
{
Contract.Requires(inputType != null && outputType != null);
Contract.Requires(Type.GetTypeCode(inputType) == inputTypeCode &&
Type.GetTypeCode(outputType) == outputTypeCode);
Contract.Requires(inputTypeCode.IsNumeric() && outputTypeCode.IsNumeric());
// 处理输入 decimal 类型。
if (inputTypeCode == TypeCode.Decimal)
{
return outputType.IsEnum ? DecimalConversion.ExplicitEnum : DecimalConversion.ExplicitNumeric;
}
// 处理输出 decimal 类型。
if (outputTypeCode == TypeCode.Decimal)
{
if (inputType.IsEnum)
{
return DecimalConversion.ExplicitEnum;
}
if (inputType == typeof(float) || inputType == typeof(double))
{
return DecimalConversion.ExplicitNumeric;
}
return DecimalConversion.ImplicitNumeric;
}
Conversion conversion = GetNumericConversion(inputTypeCode, outputTypeCode);
if (inputType.IsEnum || outputType.IsEnum)
{
// 将类型转换的类型修正为 Enum。
NumericConversion numericConv = conversion as NumericConversion;
return numericConv == null ? IdentityConversion.ExplicitEnum :
new NumericConversion(ConversionType.Enum, numericConv);
}
return conversion;
}
示例2: GetNumericConversion
private static Conversion GetNumericConversion(TypeCode inputTypeCode, TypeCode outputTypeCode)
{
Contract.Requires(inputTypeCode.IsNumeric() && inputTypeCode != TypeCode.Decimal);
Contract.Requires(outputTypeCode.IsNumeric() && outputTypeCode != TypeCode.Decimal);
Contract.Ensures(Contract.Result<Conversion>() != null);
bool fromUnsigned = inputTypeCode.IsUnsigned();
switch (outputTypeCode)
{
case TypeCode.Char:
if (inputTypeCode == TypeCode.Byte || inputTypeCode == TypeCode.UInt16)
{
return IdentityConversion.ExplicitNumeric;
}
return fromUnsigned ? NumericConversion.UInt16Un : NumericConversion.UInt16;
case TypeCode.SByte:
return fromUnsigned ? NumericConversion.SByteUn : NumericConversion.SByte;
case TypeCode.Byte:
return fromUnsigned ? NumericConversion.ByteUn : NumericConversion.Byte;
case TypeCode.Int16:
if (inputTypeCode == TypeCode.SByte || inputTypeCode == TypeCode.Byte)
{
return IdentityConversion.ImplicitNumeric;
}
return fromUnsigned ? NumericConversion.Int16Un : NumericConversion.Int16;
case TypeCode.UInt16:
if (inputTypeCode == TypeCode.Byte || inputTypeCode == TypeCode.Char)
{
return IdentityConversion.ImplicitNumeric;
}
return fromUnsigned ? NumericConversion.UInt16Un : NumericConversion.UInt16;
case TypeCode.Int32:
if (inputTypeCode < outputTypeCode || inputTypeCode == TypeCode.Char)
{
return IdentityConversion.ImplicitNumeric;
}
return fromUnsigned ? NumericConversion.Int32Un : NumericConversion.Int32;
case TypeCode.UInt32:
if (fromUnsigned)
{
if (inputTypeCode == TypeCode.UInt64)
{
return NumericConversion.UInt32Un;
}
return IdentityConversion.ImplicitNumeric;
}
return inputTypeCode < outputTypeCode ? NumericConversion.UInt32Empty : NumericConversion.UInt32;
case TypeCode.Int64:
if (inputTypeCode < outputTypeCode || inputTypeCode == TypeCode.Char)
{
return fromUnsigned ? NumericConversion.UInt64Implicit : NumericConversion.Int64Implicit;
}
return fromUnsigned ? NumericConversion.Int64UnExplicit : NumericConversion.Int64Explicit;
case TypeCode.UInt64:
if (fromUnsigned)
{
return NumericConversion.UInt64Implicit;
}
if (inputTypeCode < outputTypeCode)
{
return NumericConversion.UInt64Explicit;
}
return NumericConversion.UInt64UnExplicit;
case TypeCode.Single:
if (inputTypeCode == TypeCode.Double)
{
return NumericConversion.SingleExplicit;
}
if (inputTypeCode == TypeCode.UInt32 || inputTypeCode == TypeCode.UInt64)
{
return NumericConversion.SingleUnImplicit;
}
return NumericConversion.SingleImplicit;
case TypeCode.Double:
if (inputTypeCode == TypeCode.UInt32 || inputTypeCode == TypeCode.UInt64)
{
return NumericConversion.DoubleUn;
}
return NumericConversion.Double;
}
throw CommonExceptions.Unreachable();
}