• this(C#)


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

    以下是 this 的常用用途:

    • 限定被相似的名称隐藏的成员,如下,以下两段代码功能相同:
    public Employee(string name, string alias)
    {
        // Use this to qualify the fields, name and alias:
        this.name = name;
        this.alias = alias;
    }
    ----------
    public Employee(string m_name, string m_alias)
    {
        // Use this to qualify the fields, name and alias:
        this.name = m_name;
        this.alias = m_alias;
    }
    
    
    • 将对象作为参数传递到其他方法,例如:
    CalcTax(this);
    • 声明索引器,例如:
    public int this[int param]
    {
        get { return array[param]; }
        set { array[param] = value; }
    }
    • 由于静态成员函数存在于类一级,并且不是对象的一部分,因此没有 this 指针。 在静态方法中引用 this 是错误的。

    示例:
    在本例中,this 用于限定 Employee 类成员 name 和 alias,它们都被相似的名称隐藏。 该关键字还用于将对象传递到属于其他类的方法 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}
    Alias: {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
             */
    

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Poj1163 The Triangle(动态规划求最大权值的路径)
    Poj1258_Agri-Net(最小生成树)
    Poj1258_Agri-Net(最小生成树)
    Poj1218_THE DRUNK JAILER(水题)
    Poj1218_THE DRUNK JAILER(水题)
    Poj1298_The Hardest Problem Ever(水题)
    Poj1298_The Hardest Problem Ever(水题)
    Poj1012_Joseph
    Poj1012_Joseph
    Poj_1008--Maya Calendar
  • 原文地址:https://www.cnblogs.com/gongchuangsu/p/4850195.html
Copyright © 2020-2023  润新知