在我的.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; }
}
答案 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; }
}