当前位置: 首页>>代码示例>>C#>>正文


C# TypeCode.IsNumeric方法代码示例

本文整理汇总了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;
 }
开发者ID:GISwilson,项目名称:Cyjb,代码行数:45,代码来源:ConversionFactory.cs

示例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();
 }
开发者ID:GISwilson,项目名称:Cyjb,代码行数:81,代码来源:ConversionFactory.cs


注:本文中的TypeCode.IsNumeric方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。