首页 > 代码库 > This关键字

This关键字

this 是一个保留字,仅限于构造函数和方法成员中使用;
在类的构造函数中出现表示对正在构造的对象本身的引用,在类的方法中出现表示对调用该方法的对象的引用,在结构的构造上函数中出现表示对正在构造的结构的引用,在结构的方法中出现表示对调用该方法的结果的引用;
this 保留字不能用于静态成员的实现里,因为这时对象或结构并未实例化;
在 C# 系统中,this 实际上是一个常量,所以不能使用 this++ 这样的运算;
this 保留字一般用于限定同名的隐藏成员、将对象本身做为参数、声明索引访问器、判断传入参数的对象是否为本身。

用法一:限定被相似的名称隐藏的成员

public Employee(string name, string alias)
        {
            // Use this to qualify the fields, name and alias:
            this.name = name;
            this.alias = alias;
        }
用法二:将对象作为参数传递到其他方法
CalcTax(this);
用法三:声明索引器
public int this[int param]
        {
            get { return array[param]; }
            set { array[param] = value; }
        }
综合例子:
class Employee
    {
        private string name;
        private string alias;
        private 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 decimal Salary
        {
            get { return salary; }
        }
    }

    class Tax
    {
        public static decimal CalcTax(Employee E)
        {
            return 0.08m * E.Salary;
        }
    }

    class MainClass
    {
        static void Main()
        {
            // Create objects:
            Employee E1 = new Employee("Mingda Pan", "mpan");

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

/*
Output:
Name: Mingda Pan
Alias: mpan
Taxes: $240.00
*/


 

This关键字