现在的位置: 首页 > 综合 > 正文

C#中的类型

2012年06月12日 ⁄ 综合 ⁄ 共 1327字 ⁄ 字号 评论关闭

先看概括图:

值类型:

       创建与初始化:

       形式:

                   {修饰符}     类型
   标识符
{,标识符};

                   {修饰符}      类型     标识符{=初值}    {标识符={初值}};

         即:

 public int i;//说明i为公有int类型变量    

引用类型:

          创建于初始化:
        (1)object类型
                 形式:
                        object   标识符{=数值};
                 即:
                        object obj;                      //说明obj为object类型变量
                        object   obj2=10.25 ;        //说明obj2为object型变量并初始化
        (2)string类型
                 形式:
                         string 引用标识符{=字符串字面值};
                 即:
   string   s       //创建一个字符串的引用
   string   s=new   string("zhudan")    //创建一个新的字符串,并保存引用

值类型与引用类型区别:

namespace _1
{
    class ValueClass            //定义类
    {
        public int value = 0;
    }
    class ValueAndRefType            //定义类
    {
        public static void Main()    //方法
        {
            int a = 0;              //a的初始变量未整型0
            int b = a;
            b = 10;
            ValueClass ref1 = new ValueClass();    //创建类对象ref1
            ValueClass ref2 = ref1;               //创建类对象ref2,并赋值ref1
            ref2.value = 10;
            Console.WriteLine("Value:{0},{1}", a, b);     //对变量ref2重新赋值
            Console.WriteLine("Refs:{0},{1}", ref1.value, ref2.value); //通过ref2重新赋值,影响了ref1和ref2所引用对象
        }
    }
}
运行结果
                     Value:0,1
                     Refs:10,10
由此例可以得知:

          区别1:值类型的变量包含自身的数据,而引用类型的变量包含的是指向数据的内存块的引用。

       区别2:值类型的变量都有一份自己的数据拷贝,因而不可以通过操作其中的一个来影响另一个,而对于引用类型,两个变量有可能引用同一对象,因而,可以通过操作一个变量来影响另一个变量。

装箱与拆箱:

       装箱:将值类型转换为object类型,是一个数值分配一个对象实例,并把这个数值拷贝到新对象中。
                例如:  
              int   num =1025;      //值类型
              object   obj = num;        //num被装箱到obj

   
   拆箱:将object类型转换为值类型

                 例如:                
               int  num =1025;         //值类型
               object  obj = num;    //num被装箱到obj中
               int  num2 = (int)obj;   //拆箱返回到int

注意:装箱时不需要显示地强制类型转换。拆箱时,则必须进行强制类型转换。这是因为在拆箱情况下,一个对象可以强制转换到任何类型。





抱歉!评论已关闭.