what is 'this' constructor, what is it for

2019-01-12 12:03发布

I'm in the learning process and I have a question I havent been able to find a satisfactory answer for.

this I need a rundown on it. I keep seeing it and people have suggested fixes for my code that use it. I really have no idea what exactly it does. If someone would be so kind as to give me a basic rundown on it I would be really happy.

4条回答
唯我独甜
2楼-- · 2019-01-12 12:36

The this keyword refers to the current instance of the class and is also used as a modifier of the first parameter of an extension method.

See this: http://msdn.microsoft.com/en-us/library/vstudio/dk1507sz(v=vs.120).aspx

查看更多
Emotional °昔
3楼-- · 2019-01-12 12:41

It's used to invoke another constructor in the class:

public class Test {
    public Test() : this("AmazingMrBrock")
    {

    }

    public Test(string name) 
    {
       Console.WriteLine(name);
    }

}

http://msdn.microsoft.com/en-us/library/vstudio/ms173115.aspx

查看更多
Viruses.
4楼-- · 2019-01-12 12:47

The this keyword is used in many context and giving a complete answer will be possible only replicating the entire authoritative source. The C# Language Reference

The this keyword refers to the current instance of the class and is also used as a modifier of the first parameter of an extension method.

查看更多
唯我独甜
5楼-- · 2019-01-12 12:51

It's used to refer to another constructor in the same class. You use it to "inherit" another constructor:

public MyClass() {}

public MyClass(string something) : this() {}

In the above, when the second constructor is invoked, it executes the parameterless constructor first, before executing itself. Note that using : this() is the equivalent of : base(), except it refers to a constructor in the same class, instead of the parent class.

There's an article about constructors here (MSDN), which provides a usage example:

public Employee(int annualSalary)
{
    salary = annualSalary;
}

public Employee(int weeklySalary, int numberOfWeeks)
    : this(weeklySalary * numberOfWeeks)
{
}
查看更多
登录 后发表回答