在结构和类的情况下'this'的含义

时间:2014-03-30 04:18:05

标签: c#

在msdn文章中:

  

在类的实例构造函数或实例函数成员中,   这被归类为一个值。因此,虽然这可以用来指代   对于调用函数成员的实例,它不是   可以在类的函数成员中赋值给它。在一个   struct的实例构造函数,这对应于out参数   结构类型,以及一个实例的函数成员   struct,这对应于struct类型的ref参数。在   在这两种情况下,这被归类为变量,并且有可能   修改调用函数成员的整个结构   分配给它或将其作为ref或out参数传递。

你能给我一个结构和类的例子来说明这一点。

1 个答案:

答案 0 :(得分:4)

在类中,this关键字引用类的当前实例,或者调用特定方法的实例。 您还可以在结构中使用this关键字,它将引用结构的当前实例。

结构中的用法:

在下面的示例中,this关键字用于引用结构当前实例的字段,以区别于具有相同名称的输入参数。

public struct BoxSize
{
    public double x;
    public double y;
    public double z;

    public bool HasBiggerVolume(double x, double y, double z)
    {
        if ((this.x * this.y * this.z) > (x * y * z))
            return true;
        else
            return false;
    }
}

课程中的用法:

class student
{  
    int id;  
    String name;  

    student(int id,String name)
    {  
        id = id;  
        name = name;  
    }  
    void display()
    {
        Console.WriteLine(id+" "+name);
    }  
    public static void main()
    {  
        student s1 = new student(1,"NameA");  
        student s2 = new student(2,"NameB");  
        s1.display();  
        s2.display();  
    }  
}  

输出将是:

0 null
0 null

解决问题的方法:

class Student
{  
    int id;  
    String name;  
    student(int id,String name)
    {  
        this.id = id;  
        this.name = name;  
    }  
    void display()
    {
        Console.WriteLine(id+" "+name);
    }  
    public static void main()
    {  
        Student s1 = new Student(1,"NameA");  
        Student s2 = new Student(2,"NameB");  
        s1.display();  
        s2.display();  
    }  
}  

输出将是:

1 NameA
2 NameB

仅供参考,以下是[{1}}关键字的使用情况。

  1. this关键字可用于引用当前的类实例变量。

  2. this可用于调用当前的类构造函数。

  3. this()关键字可用于调用当前类方法(隐式)

  4. this可以在方法调用中作为参数传递。

  5. this可以在构造函数调用中作为参数传递。

  6. this关键字也可用于返回当前的类实例。