在msdn文章中:
在类的实例构造函数或实例函数成员中, 这被归类为一个值。因此,虽然这可以用来指代 对于调用函数成员的实例,它不是 可以在类的函数成员中赋值给它。在一个 struct的实例构造函数,这对应于out参数 结构类型,以及一个实例的函数成员 struct,这对应于struct类型的ref参数。在 在这两种情况下,这被归类为变量,并且有可能 修改调用函数成员的整个结构 分配给它或将其作为ref或out参数传递。
你能给我一个结构和类的例子来说明这一点。
答案 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}}关键字的使用情况。
this
关键字可用于引用当前的类实例变量。
this
可用于调用当前的类构造函数。
this()
关键字可用于调用当前类方法(隐式)
this
可以在方法调用中作为参数传递。
this
可以在构造函数调用中作为参数传递。
this
关键字也可用于返回当前的类实例。