this refers to current object. But can't under

2019-07-19 16:31发布

class Person
{
    string name;

    public Person(string name)
    {
        this.name = name;
    }

    public void method()
    {
        Person gupta = new Person("James"); // Current Object
        Console.WriteLine(this.name);
        Person gupta1 = new Person("Peter");  // Current Object
        Console.WriteLine(this.name);
        Person gupta2 = new Person("Frank");  // Current Object
        Console.WriteLine(this.name);
    }

    static void Main(string[] args)
    {
        Person p = new Person("Jim");
        p.method();
        Console.ReadLine();
    }
}

This code produced result

Jim
Jim
Jim

However if thought this should be

James
Peter
Frank

Can somebody explain please?

标签: c# this
7条回答
小情绪 Triste *
2楼-- · 2019-07-19 17:27

Maybe if you re-write your code as:

public void method()
{
    Console.WriteLine(this.name);
}

static void Main(string[] args)
{
    Person p = new Person("James"); // Current Object
    p.method();
    Person p2 = new Person("Peter");  // Current Object
    p2.method();
    Person p3 = new Person("Frank");  // Current Object
    p3.method();
    Console.ReadLine();
}

You'll better appreciate how "this" works.

查看更多
登录 后发表回答