“this”关键字有什么用,原因是什么
本文关键字:是什么 什么 this 关键字 | 更新日期: 2023-09-27 17:57:03
可能的重复项:
在 C# 中访问成员时this
关键字是可选的吗?
你什么时候使用"this"关键字?
class Program
{
public class Demo
{
int age;
string name;
public Demo(int age, string name)
{
// 'THIS' KEYWORD IS ADDED IN THESE TWO LINES THEN ONLY IT WORKS
age = age;
name = name;
}
public void Show()
{
Console.WriteLine("Your age is :" + age.ToString());
Console.WriteLine("Your name is : " + name);
}
}
static void Main(string[] args)
{
int SENDage;
string SENDname;
Console.WriteLine("Enter your age : " );
SENDage=Int32.Parse(Console.ReadLine());
Console.WriteLine("Enter your name : ");
SENDname=Console.ReadLine();
Demo obj = new Demo(SENDage, SENDname);
obj.Show();
Console.ReadLine();
}
}
我找到了这个原因,但谁能向我解释一下?
本地数据成员年龄、名称优先于实例成员。
我无法理解它。
在这种情况下,不需要 this
关键字。仅当更改以下声明时才需要:
int a;
string n;
到
int age;
string name;
要使用类变量而不是构造函数的参数,您必须使用它分配 this
:
public Demo(int age, string name){
this.age = age;
this.name = name;
}
当我将其复制粘贴到控制台应用程序中时,此代码对我来说运行良好。
"this"关键字是必需的是什么意思?它不会编译吗? 您使用的是哪个版本的Visual Studio?
或者,这是整个代码还是只是您为描述问题而制作的演示?从错误消息来看,您似乎在其他地方定义了"年龄"和"名称",也许"a"和"n"以前称为"年龄"和"名称"?
在代码中,参数名称age
和类成员age
同名。
public class Demo
{
int age;
string name;
public Demo(int age, string name)
{
age = age;
name = name;
}
.....
}
当代码执行构造函数时,它首先搜索局部变量,然后搜索类变量。由于它获取age
和name
都作为局部变量,因此它将值重新分配给它自己。
现在,如果您使用 this
关键字来分配值,则此关键字引用当前对象,从而将值分配给对象。
public class Demo
{
int age;
string name;
public Demo(int age, string name)
{
this.age = age;
this.name = name;
}
.....
}