C#中的this

一、C# 中的this
  C#中的保留字this仅限于在构造函数,类的方法和类的实例中使用。
  * 在类的构造函数中出现的this作为一个值类型,它表示对正在构造的对象本身的引用
  * 在类的方法中出现的this作为一个值类型,表示对调用该方法的对象的引用
  * 在结构的构造函数中出现的this作为一个变量类型,表示对正在构造的结构的引用
  * 在结构的方法中出现this作为一个变量类型,表示对调用该方法的结构的引用
  除此之外,其他地方使用this保留字都是不合法的。
  using System;
  class A
  {
  public int x;
  public void Main()
  {
  x=5;
  Console.WriteLine("this is the value of the x:{0}",x);
  Console.WriteLine("this is the value of the this.x:{0}",this.x);
  }
  }
  这个程序不知道为什么执行的时候出现问题。
  成员常量
  public const double X=1.0
  关键字const用于声明常量,后面要声明的常量的类型。
  类的常量的修饰符号:
  单词this是C#中的保留字,它允许一个对象指向它自己。在方法内部,this引用可以用于指向任何当前执行的对象。

举例

  例如:在一个叫做ChessPiece的类中,可以有个方法叫Move,它可能包含下列行:
  if(this.position==piece.position)
  result=false;
  在这种情况下,this引用用来澄清是哪个position被引用了。this引用指向触发方法的对象。所以如果下面这行用
  于触发方法,this引用指向firstshop:
  firstshop.Move();
  但是,如果另外一个对象用于触发方法,this引用就指向它。所以,如果使用了下面的调用,Move方法中的this引
  用就指向secondshop:
  secondshop.Move();
  经常地,this引用用于区分构造函数的参数和它们相对应的同名的实例变量。例如:一个叫做Account类的构造函数
  如下所示:
  public Account(string owner, long account, double initial)
  {
  name=owner;
  acctNumber=account;
  balance=initial;
  }
  在编写这个构造函数时,我们特意为参数去了不同的名字来区分它们与实例变量name,accNumber,和balance。这个区分是任意的。构造函数分来可以用this引用写成如下所示:(这用更容易让人理解和接受)
  public Account(string name, long acctNumber, double balance)
  {
  this.name=name;
  this.acctNumber=acctNumber;
  this.balance=balance;
  }
  在这个版本的构造函数(非静态的构造函数是在创建类的对象的时候被自动调用的)中,this引用特别指向对象的实例变量。赋值语句右边的变量指向形参。这个方法消除了为了变量取不同的但是等价的名字的需要。这种情况有事在其它方法中发生,但通常出现在构造函数中。

  public ;private;protected;internal;new

二、this 是不是用不用都一样?

比如你的类中有一个成员变量为a。在你的成员函数中有定义了一个局部变量a。此时就必须使用this关键字来指示类的成员。也就是类的成员变量a写为this.a  其实这个很容易理解的,你写的那些响应函数,说白了都是类方法。   在程序运行后,可能会被很多这个类的实例(对象)来调用。。。那么请问,系统怎么知道调用这个类方法的是谁?是哪个对象?   所以,这时this就发挥它的作用啦。   每当一个对象调用这个类方法的时候,系统就会自动做这个对象的指针赋给this指针。   this指当前类   比如在一个AAA类里有一个aaa的方法   在这个AAA类中调用这个aaa方法就可以用this.aaa   如果是在别的类中就要实例化一个对象来调用这个方法   AAA a=new AAA();   a.aaa;   在静态的方法中不能使用this   如main方法就是一个静态方法  this是保留的指针。指向当前对象。它的好处就是在编译期就可以获得对象的地址。比如一个类中有个成员类。成员类需使用上层类的函数,就可以把this传到成员类中。  this 关键字引用类的当前实例
三、C#构造函数中this 和 base()一起使用?
不可以同时使用。  通常在一个类中,使用一个参数最齐全的构造函数作为主构造函数,其他构造函数都使用this来指向它。  当一个类继承它的时候,比较好的做法是首先按照父类中每个构造函数的签名都实现一个。也是指定一个主构造函数。其他构造函数都使用this指向它。而这个主构造函数使用base指向父类的构造函数。
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值