• C#装箱,拆箱和强制转换


    关系:

    强制转换就包含有装箱拆箱操作,装箱就是把值类型转换成引用类型,反之就是拆箱.

    一:  装箱和拆箱:

    装箱是把值类型转换成引用类型,而拆箱是把引用类型转换成值类型;

    利用装箱和拆箱功能,可通过允许值类型的任何值与Object 类型的值相互转换,将值类型与引用类型链接起来.
     例如: 
    int val = 100; 
    object obj = val; 
    Console.WriteLine (“对象的值 = {0}", obj); 
    这是一个装箱的过程,是将值类型转换为引用类型的过程

    int val = 100; 
    object obj = val; 
    int num = (int) obj; 
    Console.WriteLine ("num: {0}", num); 
    这是一个拆箱的过程,是将值类型转换为引用类型,再由引用类型转换为值类型的过程 

    注意:被装过箱的对象才能被拆箱;

    二:   内存分配:

      值类型只会在中分配。
          引用类型分配内存与托管
          托管堆对应于垃圾回收。

    三:   强制转换:

       (引用)

    1.任何一门编程语言均有相关数据类型。C#也不例外,其基本数据类型有int,short,long,float,double,string等。数据类型之间可以相互转换。不过转换过程要注意小类型能转换成大类型,但大类型一般不能转换成小类型,也就是说低精度无条件转高精度,高精度转低精度需要添加转换条件。如int型可以转换成float型,但float型不一定可以转换成int型,至少这在C,C++是这样,但在C#中明显有了改变.

    例如:


    double dbl_num=12345678910.456;
    int k = (int) dbl_num ;//此处运用了强制转换

    以上代码如果在C,C++中强制转换成int型,肯定会出错,但现在在C#中却不会出错了,不过转换后的值往往是溢出值,是不精通的。这点需要大家注意。

    2.采用另一种方式转换类型,如int.parse(),int32.parse()等采用方法来转换.

    string str="100";

    int i=int.Parse(str);

    注意:str除掉引号的类型必须和*.Parse的类型一致。如果将100改成100.78,即变成float类型,运行时将会报错”输入字符串的格式不正确.”

    3.采用后缀式转换,如k.toString(),一般运用于字符串或日期等其它类型

    int i=100;

    string s=i.ToString();

    4.采用Convert类来实现转换,该类基本支持所以类型之间的转换

    string str="100";

    int i = Convert.ToInt16(str);

    注意:str除掉引号的类型必须和Convert.*的类型一致。如果将100改成100.78,即变成float类型,运行时将会报错”输入字符串的格式不正确.”

     

  • 相关阅读:
    C#简单读取MongoDB数据
    百度地图自定义图标
    递归实现DropDownList层级
    [MYSQL]-EXPLAIN用法
    java对 zip文件的压缩和解压(ant解决中文乱码)
    将Excel表结构导入到Powerdesigner
    weblogic解决jar包冲突
    深入理解javascript原型和闭包(3)——prototype原型
    深入理解javascript原型和闭包(2)——函数和对象的关系
    深入理解JavaScript的原型和闭包(一)
  • 原文地址:https://www.cnblogs.com/fengjiulin110120/p/6605739.html
Copyright © 2020-2023  润新知