C# this关键字

C# this
this 关键字引用类的当前实例,还可用作扩展方法的第一个参数的修饰符。

以下是 this 的常用用途:

  • 限定被相似的名称隐藏的成员,例如:(在Empioyee方法所在的类中已经声明定义过name字段)

    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; }
    }

    由于静态成员函数存在于类一级,并且不是对象的一部分,因此没有 this 指针。在静态方法中引用 this 是错误的。在本例中,this 用于限定 Employee 类成员 namealias,它们都被相似的名称隐藏。this 还用于将对象传递到属于其他类的方法 CalcTax

    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
    
     */
    
    
    另外在C/S结构的应用程序中,可以使用this传递窗体对象
             /// <summary>
            /// 关闭按钮点击
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void tsMain_Close_Click(object sender, EventArgs e)
            {
                //页面关闭的方法,就是把页面的实例对象关闭,this关键字就是当前页面的对象
                this.Close();
            }

    你可能感兴趣的:(this关键字)