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