“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”关键字有什么用,原因是什么

在这种情况下,不需要 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;
     }
     .....
}

当代码执行构造函数时,它首先搜索局部变量,然后搜索类变量。由于它获取agename都作为局部变量,因此它将值重新分配给它自己。

现在,如果您使用 this 关键字来分配值,则此关键字引用当前对象,从而将值分配给对象。

public class Demo
{
     int age;
     string name;
     public Demo(int age, string name)
     {
          this.age = age;
          this.name = name;
     }
     .....
}