您的位置:首页 > 编程语言 > C#

C#中this的用法

2013-03-17 19:30 225 查看
C#中this的用法:

this 关键字引用类的当前实例。" 这是MSDN的解释

* 我个人认为最好的理解方式,只要理解为“我的”就可以的,就是类的当前实例的引用

* 先来解释一下什么是引用

* 也许我们很迷惑C#中声明一个类的实例的过程很奇怪

* 我们一般声明一个类的实例是这样的 A a; a=new A();本来已经声明的实例为什么还要"牛"

* 先看第一句 A a; 其实那个a是一个引用,它只是在堆栈中的一个内存单元,在这个内存单元中存放着实例所在的位置,这一句只是声明了一个引用。

* 再看第二句 a=new A(); 这一句才是给实例分配内存,其实是在堆中分配内存.

* this 就是指的实例化的对象所在的位置.因为我们在编写类时还无法知道实例将实现在堆中的哪个位置.

* 好吗,太高深了,能不能轻松点.好吧我们还用上帝造人来说.

* 上帝要造人,先在实验室画了一个图,这个图就是类,然后上帝给他要造的人起名为张三,"我要造一个人叫张三",这个张三仅仅是个代号,然后上帝给张三分配了血肉骨头

* 当上帝设计图纸时,还不知道这个人起什么名字,所以在使用这个未名人(或者说图纸上的人)的血肉时就用"我的"来代替.这个"我的"就是this.我们都是人,"我的耳朵"有可能指的是张三的耳朵,有可能指的是李四的耳朵,也有可能指的是秦始皇的耳朵.

* 如果你学过C++语言的话,你完全可以把C#中的this等同于C++语言中的this指针,只不过在C# 中this是一个引用.

* 在C#中没有出现指针的概念,目的是让人们认为它要比C++语言要简单,但这反而把一些问题搞复杂了.

*/

using System;

using System.Collections.Generic;

using System.Text;

class A

{

private int age=20;

public int tellmeage1(int age)//注意虚参和私有成员重名了。

{

return this.age;//这里返回的是私有成员myage的数值

}

public int tellmeage2(int age)

{

return age;//这里返回的是虚参的数值

}

//如果虚参和私有成员不重名时,在方法中访问成员时可以不必非加上this,但好的习惯是加上this。

public int tellmeage3(int newage)

{

return age;

}

public int tellmeage4(int newage)

{

return this.age;

}

}

namespace aboutThis

{

class Program

{

static void Main(string[] args)

{

A a=new A();

Console.WriteLine(a.tellmeage1(100));

Console.WriteLine(a.tellmeage2(100));

Console.WriteLine(a.tellmeage3(100));

Console.WriteLine(a.tellmeage4(100));

}

}

}

//输出结果是

//20

//100

//20

//20
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: