白桦的天空

第一次的心动,永远的心痛!
  首页  :: 新随笔  :: 联系 :: 管理

C# 程序员参考 this

Posted on 2005-04-05 10:44  白桦的天空  阅读(285)  评论(0编辑  收藏  举报

this 关键字将引用类的当前实例。静态成员函数没有 this 指针。this 关键字可用于从构造函数、实例方法和实例访问器中访问成员。

以下是 this 的常用用途:

  • 限定被相似的名称隐藏的成员,例如:
    public Employee(string name, string alias) 
    {
       this.name = name;
       this.alias = alias;
    }
  • 将对象作为参数传递到其他方法,例如:
    CalcTax(this);
  • 声明索引器,例如:
    public int this [int param]
    {
          get
          {
             return array[param];
          }
          set
          {
             array[param] = value;
          }
       }

在静态方法、静态属性访问器或字段声明的变量初始值设定项中引用 this 是错误的。

示例

在本例中,this 用于限定 Employee 类成员 namealias,它们都被相似的名称隐藏。this 还用于将对象传递到属于其他类的方法 CalcTax

// keywords_this.cs
// this example
using System;
public class Employee 
{
   public string name;
   public string alias;
   public decimal salary = 3000.00m;

   // Constructor:
   public Employee(string name, string alias) 
   {
      // Use this to qualify the fields, name and alias:
      this.name = name;
      this.alias = alias;
   }

   // Printing method:
   public void printEmployee() 
   {
      Console.WriteLine("Name: {0}\nAlias: {1}", name, alias);
      // Passing the object to the CalcTax method by using this:
      Console.WriteLine("Taxes: {0:C}", Tax.CalcTax(this));
   }
}
public class Tax 
{
   public static decimal CalcTax(Employee E) 
   {
      return (0.08m*(E.salary));
   }
}

public class MainClass 
{
   public static void Main() 
   {
      // Create objects:
      Employee E1 = new Employee ("John M. Trainer", "jtrainer");

      // Display results:
      E1.printEmployee();
   }
}

输出

Name: John M. Trainer
Alias: jtrainer
Taxes: $240.00