Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)qq
published in(发表于) 2014/7/11 9:21:52
C#教程:C#数据类型之引用类型

C#教程:C#数据类型之引用类型

引用类型

引用类型的变量又称为对象,可存储对实际数据的引用。Class、nterface、delegate可以用于声明引用类型。

C#有两个内置的引用类型,分别为Object和String类型,下面将对其进行详细讲解。

Object类型在.NET Framework中是Object的别名。在C#的统一类型系统中,所有类型(预定义类型、用户定义类型、引用类型和值类型)都是直接或间接从Object继承的。可以将任何类型的值赋给Object类型的变量。将值类型的变量转换为对象的过程称为“装箱”。将对象类型的变量转换为值类型的过程称为“取消装箱”。

本教程来自http://www.isstudy.com

示例

Object类型a的引用调用

下面通过例子来说明Object的引用,主要程序代码如下:

using System;

class ObjectClass

{

public int i = 60;

}

class MainClass

{

static void Main()

{

object a;

a = 1; // 装箱的例子

Console.WriteLine(a);

Console.WriteLine(a.GetType());

Console.WriteLine(a.ToString());

Console.WriteLine();

a = new ObjectClass ();

ObjectClass classRef;

classRef = (ObjectClass)a;

Console.WriteLine(classRef.i);

}

}

输出结果为:

1

System.Int32

1

60


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

string类型表示 Unicode 字符的字符串。string是 .NET Framework 中的string的别名。字符串是不可变的。字符串对象一旦被创建,其内容就不能更改。

尽管string是引用类型,但定义相等运算符(== 和 !=)是为了比较 string 对象(而不是引用)的值。这使得对字符串相等性的测试更为直观。例如:

string a = "hello";

string c = "h";

c = c+"ello";

Console.WriteLine(a == c);

Console.WriteLine((object)a == (object)c);


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

string可以包含转义序列,因为这些转义序列需要一个反斜杠开头,所以如果在字符串中使用这个非转义的反斜杠,则需要用两个“”来表示。如 string filepath="Cloadfiletest.txt"..但是如果大量使用这样的表示会让人难以理解,在C#中可以在字符串前面加上“@”符号,字符串里的字符就不会被解释为转义序列了。如string filepath=@"Cloadfiletest.txt"。

本教程来自http://www.isstudy.com

完整程序代码如下:

★★★★★主程序文件完整程序代码★★★★★

using System;

using System.Collections.Generic;

using System.Text;

namespace _2_02

{

class ObjectClass

{

public int i = 60;

}

class Program

{

static void Main(string[] args)

{

object a;

a = 1; // 装箱的例子

Console.WriteLine(a);

Console.WriteLine(a.GetType());

Console.WriteLine(a.ToString());

Console.WriteLine();

a = new ObjectClass();

ObjectClass classRef;

classRef = (ObjectClass)a;

Console.WriteLine(classRef.i);

Console.Read();

}

}

}




If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759