在课堂上通过这个访问

时间:2012-12-18 10:08:43

标签: c# .net

在我的.NET类中,我通过this访问我的属性和成员。如果我在不使用this的情况下访问它们,有什么区别。

public class Test
{
    private string _test;

    public Test()
    {
        this.Test = "test";
        // vs. 
        Test = "test";

        // and
        this._test = "test";
        // vs. 
        _test = "test";
    }

    public string Test { get; set; }
}

8 个答案:

答案 0 :(得分:2)

编译器完全没有区别。使用更具可读性的东西。我更喜欢使用this来表明这是一个字段/属性而不是局部变量。

答案 1 :(得分:2)

This只是指类的变量。当您尝试时,它可以避免被绊倒:

private string Test;

public Test(String Test)
{
    this.Test = Test;
    // vs. 
    Test = Test;

}

第一个将正常工作。

答案 2 :(得分:1)

这样做会产生任何影响,直到你有同名的参数liekt his

public class Test
{
 private string _test;

 public Test(string Test,string _test)
 {
    this.Test = "test";//this refers invoking object Test i.e class varaible
    // vs. 
    Test = "test";//this refer method passed Test param

    // and
    this._test = "test";//this refers invoking object Test i.e class varaible
    // vs. 
    _test = "test";//this refer method passed Test param
}

  public string Test { get; set; }
}

所以在上面的情况下方法参数Test hide class Test prameter,为了避免这种情况你需要用它来引用类的当前对象

答案 3 :(得分:0)

您的代码没有区别,但有时候this会帮助您指定范围。

public Test(string _test)
{
    this._test = "test"; // sets class field
    // vs. 
    _test = "test"; // sets ctor parameter
}

答案 4 :(得分:0)

最终结果没有区别。

有一件事就是输入此内容会给你智能感知,它只列出该类中可用的成员。

此外,如果该方法是类的扩展方法,那么您将需要使用它来调用它。

答案 5 :(得分:0)

无论您是否使用this,都没有区别。这只是可读性。

答案 6 :(得分:0)

查看msdn页面:http://msdn.microsoft.com/en-us/library/dk1507sz(v=vs.80).aspx

在C#this主要用于在具有相同名称的变量和参数时提高可读性。

答案 7 :(得分:0)

编译器没有区别。使用哪种更易读。

public class Test 
{ 

private string _test;

public Test(string Test)
{
    this.Test = "test";
    // vs. 
    Test = "test";

    // and
    this._test = "test";
    // vs. 
    _test = "test";
}

  public string Test { get; set; }
}