深入浅出C# 中文版 图文皆译 第四章 类型和引用 page139
2008-12-27 18:08
344 查看
引用就像是你的对象的标签<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
在你的厨房里,你大概会有盛糖和盐的容器。如果你交换了它们的标签,那你就会做出一顿相当难吃的饭了--因为虽然标签换了,但是容器里的内容还是没有变。引用就像是标签。你可以移动标签,把它们指向不同的东西,但是指挥什么方法和数据是可用的的对象,而不是引用本身。
你不可以直接指向对象。比如说,如果Guy是一个对象类型的话,你不可以写Guy.GiveCash()这样的代码。C#编译器不知道你指的是哪一个Guy对象,因为你在堆内可能有多个Guy的实例。所以你需要一个像Joe这样的引用变量,你可以把一个实例赋值给它,比如Guy joe = new Guy()。
现在,你可以这样调用方法:joe.GiveCash()。Joe指向一个Guy类的实例,C#编译器就知道需要用哪个实例了。就像上面你看到的那样,可能会有多个标签指向这同一个实例。所以你可以写Guy dad = joe,然后调用dad.GiveCash()方法。这样是可以--Joe的孩子每天都这样做。
你的代码需要使用内存中的对象的时候,它要使用引用,这个引用是一个它要指向的对象的类型的变量。一个引用就像一个你的代码使用的标签,这个标签指向某个特定的对象。
在你的厨房里,你大概会有盛糖和盐的容器。如果你交换了它们的标签,那你就会做出一顿相当难吃的饭了--因为虽然标签换了,但是容器里的内容还是没有变。引用就像是标签。你可以移动标签,把它们指向不同的东西,但是指挥什么方法和数据是可用的的对象,而不是引用本身。
你不可以直接指向对象。比如说,如果Guy是一个对象类型的话,你不可以写Guy.GiveCash()这样的代码。C#编译器不知道你指的是哪一个Guy对象,因为你在堆内可能有多个Guy的实例。所以你需要一个像Joe这样的引用变量,你可以把一个实例赋值给它,比如Guy joe = new Guy()。
现在,你可以这样调用方法:joe.GiveCash()。Joe指向一个Guy类的实例,C#编译器就知道需要用哪个实例了。就像上面你看到的那样,可能会有多个标签指向这同一个实例。所以你可以写Guy dad = joe,然后调用dad.GiveCash()方法。这样是可以--Joe的孩子每天都这样做。
你的代码需要使用内存中的对象的时候,它要使用引用,这个引用是一个它要指向的对象的类型的变量。一个引用就像一个你的代码使用的标签,这个标签指向某个特定的对象。
相关文章推荐
- 深入浅出C# 中文版 图文皆译 第四章 类型和引用 page130
- 深入浅出C# 中文版 图文皆译 第四章 类型和引用 page131
- 深入浅出C# 中文版 图文皆译 第四章 类型和引用 page153
- 深入浅出C# 中文版 图文皆译 第四章 类型和引用 page169
- 深入浅出C# 中文版 图文皆译 第四章 类型和引用 page158
- 深入浅出C# 中文版 图文皆译 第四章 类型和引用 page123
- 深入浅出C# 中文版 图文皆译 第四章 类型和引用 page126
- 深入浅出C# 中文版 图文皆译 第四章 类型和引用 page140
- 深入浅出C# 中文版 图文皆译 第四章 类型和引用 page147
- 深入浅出C# 中文版 图文皆译 第四章 类型和引用 page154
- 深入浅出C# 中文版 图文皆译 第四章 类型和引用 page128
- 深入浅出C# 中文版 图文皆译 第四章 类型和引用 page134
- 深入浅出C# 中文版 图文皆译 第四章 类型和引用 page157
- 深入浅出C# 中文版 图文皆译 第四章 类型和引用 page163(162是填词游戏,跳过)
- 深入浅出C# 中文版 图文皆译 第四章 类型和引用 page138
- 深入浅出C# 中文版 图文皆译 第四章 类型和引用 page168
- 深入浅出C# 中文版 图文皆译 第四章 类型和引用 page170
- 深入浅出C# 中文版 图文皆译 第四章 类型和引用 page164
- 深入浅出C# 中文版 图文皆译 第四章 类型和引用 page137
- 深入浅出C# 中文版 图文皆译 第四章 类型和引用 page148