黑马程序员技术交流社区

标题: this关键字的含义? [打印本页]

作者: 王朋    时间: 2013-5-18 09:55
标题: this关键字的含义?
在不同的地方都会用到this这个关键字,对它不是很熟,能不能给我解释说明下在不同的场合都有哪些含义和用法?

作者: 韩秀山    时间: 2013-5-18 10:11
不难理解。无论在什么场合下,this关键字代表的都是,本对象的引用!定义在方法中,哪个对象.方法()了,this就是这个对象的引用!!这就是面向对象一种优点。this.属性  。是指调用这个对象的属性。你就记下,这个代表的是当前对象的引用就行了。
作者: 神之梦    时间: 2013-5-18 10:28
本帖最后由 神之梦 于 2013-5-18 10:30 编辑

楼上说的差不多了,补充一点this还有个用法,就是构造函数间的调用,可以被称为this语句,格式:this(),不带点:
如有两构造函数:
Peasion(int name)
{语句}
Peasion(int name,int age)
{this(name)//就表示调用了上一个构造函数,这个语句必须在第一行。
其他语句}
我这只是简单举例,没有写完整的代码,name也是定义的int型的,希望楼主看的懂。

作者: 吃肉的小浣熊    时间: 2013-5-18 15:55
this 是一个保留字,仅限于构造函数和方法成员中使用;

  在类的构造函数中出现表示对正在构造的对象本身的引用,在类的方法中出现表示对调用该方法的对象的引用,在结构的构造上函数中出现表示对正在构造的结构的引用,在结构的方法中出现表示对调用该方法的结果的引用;

  this 保留字不能用于静态成员的实现里,因为这时对象或结构并未实例化;

  在 C# 系统中,this 实际上是一个常量,所以不能使用 this++ 这样的运算;

  this 保留字一般用于限定同名的隐藏成员、将对象本身做为参数、声明索引访问器、判断传入参数的对象是否为本身。


作者: 周琪    时间: 2013-5-18 19:44
本帖最后由 周琪 于 2013-5-18 19:45 编辑

this表示引用类的当前实例,但你要理解。我给列出了以下三种用法,请看下
在类中:
class Person
    {
        public Person(string name, int age)
        {
            this.name = name;  //this.name表示在下面定义的公有的name,而name表示的是你传递的参数name;
            this.age = age;//this.age表示在下面定义的公有的age,而age表示的是你传递的参数age;
        }
        public string name;
        public int age;
    }

索引中:
class Name
    {
        string n0 = "无名";
        string n1 = "匿名";
      public string this[int index]
      {
          get
          {
              return (index == 1) ? n1 : n0;
          }
          set
          {
              if (index == 0)
              {
                  n0 = value;
              }
              else
              {
                  n1 = value;
              }
           
          }
      }
      
    }


扩展方法中:
static class Myclass
    {
        public static bool LengthOverFive(this string str)
        {
            return str.Length > 5;
        }
     
    }
用的时候
static void Main(string[] args)
        {
string name = "zhouqi";
           bool flag=name.LengthOverFive();
           Console.WriteLine(flag);
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2