zoukankan      html  css  js  c++  java
  • C# 类型转换

    类型转换从根本上说是类型铸造,或者说是把数据从一种类型转换为另一种类型。在 C# 中,类型铸造有两种形式:

    • 隐式类型转换 - 这些转换是 C# 默认的以安全方式进行的转换, 不会导致数据丢失。例如,从小的整数类型转换为大的整数类型,从派生类转换为基类。
    • 显式类型转换 - 显式类型转换,即强制类型转换。显式转换需要强制转换运算符,而且强制转换会造成数据丢失。

    下面的实例显示了一个显式的类型转换:

    namespace TypeConversionApplication
    {
        class ExplicitConversion
        {
            static void Main(string[] args)
            {
                double d = 5673.74;
                int i;
    
                // 强制转换 double 为 int
                i = (int)d;
                Console.WriteLine(i);
                Console.ReadKey();
                
            }
        }
    }
    

    当上面的代码被编译和执行时,它会产生下列结果:

    5673
    

    C# 类型转换方法

    C# 提供了下列内置的类型转换方法:

    序号方法 & 描述
    1 ToBoolean
    如果可能的话,把类型转换为布尔型。
    2 ToByte
    把类型转换为字节类型。
    3 ToChar
    如果可能的话,把类型转换为单个 Unicode 字符类型。
    4 ToDateTime
    把类型(整数或字符串类型)转换为 日期-时间 结构。
    5 ToDecimal
    把浮点型或整数类型转换为十进制类型。
    6 ToDouble
    把类型转换为双精度浮点型。
    7 ToInt16
    把类型转换为 16 位整数类型。
    8 ToInt32
    把类型转换为 32 位整数类型。
    9 ToInt64
    把类型转换为 64 位整数类型。
    10 ToSbyte
    把类型转换为有符号字节类型。
    11 ToSingle
    把类型转换为小浮点数类型。
    12 ToString
    把类型转换为字符串类型。
    13 ToType
    把类型转换为指定类型。
    14 ToUInt16
    把类型转换为 16 位无符号整数类型。
    15 ToUInt32
    把类型转换为 32 位无符号整数类型。
    16 ToUInt64
    把类型转换为 64 位无符号整数类型。

    下面的实例把不同值的类型转换为字符串类型:

    namespace TypeConversionApplication
    {
        class StringConversion
        {
            static void Main(string[] args)
            {
                int i = 75;
                float f = 53.005f;
                double d = 2345.7652;
                bool b = true;
    
                Console.WriteLine(i.ToString());
                Console.WriteLine(f.ToString());
                Console.WriteLine(d.ToString());
                Console.WriteLine(b.ToString());
                Console.ReadKey();
                
            }
        }
    }

    当上面的代码被编译和执行时,它会产生下列结果:

    75
    53.005
    2345.7652
    True

    笔记列表


    1.    Jennis

        jennistian@gmail.com

      隐式转换和显式转换

      隐式转换:C# 默认的以安全方式进行的转换。本质是从小存储容量数据类型自动转换为大存储容量数据类型,从派生类转换为基类。

      实例:

      namespace TypeConvertion
      {   class Class1
          {
      
      	}
      
      	class Class2 : Class1 //类Class2是类Class1的子类
      	{
      
      	}
      	class Program
      	{
      	    static void Main(string[] args)
      	    {
      	        int inum = 100;
      	        long lnum = inum; // 进行了隐式转换,将 int 型(数据范围小)数据转换为了 long 型(数据范围大)的数据
      	        Class1 c1 = new Class2(); // 这里也是隐式转换,将一个新建的 Class2 实例转换为了其基类 Class1 类型的实例 C1
      	    }
      	}
      }
      

      显式转换:通过用户使用预定义的函数显式完成的,显式转换需要强制转换运算符。

      转换类型的范围大小和从属关系和隐式转换相反。显式转换可能会导致数据出错,或者转换失败,甚至无法编译成功。

      实例:

      double dnum = 100.1;
      int ifromd = (int)dnum; //double类型显式转换转为int类型
      
      
      Class1 c11 = new Class1();
      Class2 c22 = c11 as Class2; //使用as进行显式转换
      Console.WriteLine(c22 is Class1);
      Console.WriteLine(c22 is Class2);
      

      运行结果:

      FALSE
      FALSE
  • 相关阅读:
    Caused by: Unable to load bean: type:com.opensymphony.xwork2.ObjectFactory class:org.apache.struts2.
    走到头儿的外企之路——北漂18年(45)
    [ERROR] XML Parser Error on line 11: 注释中不允许出现字符串 "--"
    Unknown lifecycle phase "mybatis-generator-generate"
    org.eclipse.wst.xsl.jaxp.debug.invoker.TransformationException
    windows expect-5.21r1b1-setup.exe 下载链接
    linux下C语言实现静态IP地址,网关的设置
    OpenSSL “心脏滴血”漏洞
    linux 让root用户可以telnet
    perl 创建文本框
  • 原文地址:https://www.cnblogs.com/lbonet/p/6523627.html
Copyright © 2011-2022 走看看