C#基础篇 数据类型:引用类型

引用类型的变量又称为对象,可以储存对实际数据的引用。

C#有两个内置的引用类型,分别为Object和String类型。


Object类型:

在C#的统一类型系统中,所有类型(预定义类型,用户定义类型,引用类型和值类型)都是直接或间接从Object继承的。

可以将任何类型的值赋值给Object类型的变量。将值类型的变量转换为对象的过程称为“装箱”。

将对象类型的变量转换为值类型的过程称为“取消装箱”。


示例:Object类型的引用调用

using System;
namespace wm16
{
    class Program
    {
        class ObjectClass   //定义一个类
        {
            public int i = 60;                 //定义一个整形变量
        }
        static void Main(string[] args)
        {
            object a;                             //定义Object类型
            a = 1;                                   //装箱
            Console.WriteLine(a);      //输出装箱后的值
            Console.WriteLine(a.GetType());     //输出类型
            Console.WriteLine(a.ToString());     //以字符串输出
            Console.WriteLine();                          //换行
            a = new ObjectClass();                       //用ObjectClass类进行初始化
            ObjectClass classRef;                         //定义ObjectClass
            classRef =  (ObjectClass)a;                //拆箱
            Console.WriteLine(classRef.i);          //输出i值 
        }
    }
}
运行结果:

1
System.Int32
1


60
请按任意键继续. . .

说明:可以看到classRef只是指向了a因为classRef并没有实例化,所以它的classRef.i等于60.


string类型:

string类型便是unicode字符的字符串。字符串是不可变的。字符串一旦被创建,其内容就不能更改。

尽管string是引用类型,但定义相等运算符(==和!=)是为了比较string对象(而不是引用)的是。

这使得对字符串相等性的测试更为直观。


示例:string类型的比较

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace wm16_2
{
    class Program
    {
        static void Main(string[] args)
        {
            string a = "hello";            //丁定义字符串
            string c = "h";                   //定义字符串
            c = c + "ello";                   //字符串相连
            Console.WriteLine(a == c);     //判断字符串的内容是否相等
            Console.WriteLine((object)a == (object)c);  //判断字符串的实例是否相等
        }
    }
}
运行结果:

True
False
请按任意键继续. . .

说明:这是显示“True”,然后显示“False”,因为字符串的内容是相同的,但是a和c引用的不是同一字符串实例。


string转义序列:

string可以包含转义序列,两种表示法:

示例:

string filename = "C\\load\\file\\wm.txt";

string filename = @"C\load\file\wm.txt";


拆箱和装箱:

装箱就是将值类型转换为引用类型Object,这使得值类型可以存储在垃圾回收堆里。

拆箱将从对象中提取值类型。拆箱就是将引用类型转换为值类型。


示例:拆箱与装箱

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace wm16_3
{
    class Program
    {
        static void Main(string[] args)
        {
            int i = 16;
            object a = (object)i;             //装箱
            a = 123;
            i = (int)a;                                 //拆箱
            Console.WriteLine(a);
            Console.WriteLine(i);
        }
    }
}
运行结果:

123
123
请按任意键继续. . .

说明:拆箱、装箱可能对程序性能产生影响。

转载请保留原文链接:http://blog.csdn.net/nonknown/article/details/17928017


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值