A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王朋 中级黑马   /  2013-5-18 09:55  /  2166 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在不同的地方都会用到this这个关键字,对它不是很熟,能不能给我解释说明下在不同的场合都有哪些含义和用法?

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

4 个回复

倒序浏览
不难理解。无论在什么场合下,this关键字代表的都是,本对象的引用!定义在方法中,哪个对象.方法()了,this就是这个对象的引用!!这就是面向对象一种优点。this.属性  。是指调用这个对象的属性。你就记下,这个代表的是当前对象的引用就行了。

点评

你这里也来呀  发表于 2013-5-18 16:35

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 神之梦 于 2013-5-18 10:30 编辑

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

点评

你是四处跑啊 哈哈  发表于 2013-5-18 16:35

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 赞一个!

查看全部评分

回复 使用道具 举报
this 是一个保留字,仅限于构造函数和方法成员中使用;

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

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

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

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

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 周琪 于 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);
}

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马