使用此关键字

时间:2013-02-24 14:49:11

标签: c# .net this

我正在制作一个窗口表单应用程序。当我查看文件Form1.Designer.cs时,我在自动生成的代码中看到了

        this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.ClientSize = new System.Drawing.Size(284, 262);
        this.Controls.Add(this.button2);
        this.Controls.Add(this.button1);
        this.Name = "Form1";
        this.Text = "Form1";
        this.ResumeLayout(false);

这个告诉了什么,以及在c#中可以使用多少种方式

5 个答案:

答案 0 :(得分:6)

它指的是该类的当前实例。如果您使用像ReSharper这样的工具,有时可能会被视为多余。

public class Test
{
        private string testVariable;

        public Test(string testVariable) 
        {
            this.testVariable = testVariable;
        }
}

在此上下文中,this.testVariable引用类中的私有字符串,而不是通过构造函数传入的testVariable

http://msdn.microsoft.com/en-gb/library/dk1507sz(v=vs.71).aspx

答案 1 :(得分:4)

关键字引用类的当前实例 - 因此在这种情况下是正在加载的Form1的实例。

至于为何使用它,它可以帮助区分变量 - 例如

 private string bar;

 private void Foo(string bar)
 {
   this.bar = bar;
 }

(虽然对于上面的代码,很多人会认为私人栏应该是_bar)

有关this

的更多信息

答案 2 :(得分:3)

this关键字引用class的当前实例,并且还用作扩展方法的第一个参数的修饰符。

public Employee(string name, string alias)
{
// Use this to qualify the fields, name and alias:
this.name = name;
this.alias = alias;
}

答案 3 :(得分:3)

  

this关键字引用类的当前实例,并且是   也用作扩展方法的第一个参数的修饰符。

  • this关键字指的是该类的当前实例。它可用于从构造函数,实例方法和实例访问器中访问成员。
  • this消除了命名冲突。
  • this无法引用静态字段或方法。它不能发生在静态类中。
  • this关键字由编译器推断。

答案 4 :(得分:2)

  class program
{
   public int x = 10;
    public void fun1()
    {

        Console.WriteLine("as you wish");
    }
}
class program2:program
{
    public void fun2()
    {
        Console.WriteLine("no");

        this.fun2(); //base class function call

        this.fun1(); // same class function call

    }
}
class program3:program2
{
   public int x = 20;
    public void fun3()
    {

        Console.WriteLine(this.x); //same class x variable call
        Console.WriteLine(base.x); // base class x variable call
       // this.fun3(); // same class function call
        Console.WriteLine("Program3 class call");
        base.fun1(); //base class function call
    }

    static void Main(string[] args)
    {
        program3 pr = new program3();
        pr.fun3();
    }

此关键字调用当前引用。如果要调用同一类的当前对象,则使用此关键字。 我们如何需要这个关键字??? 1.消除基类和当前类对象。