您好,
我对某事有疑问。我环顾四周,但似乎无法弄明白。
<小时/>
为什么有些程序员在某事前使用this
?像:
this.button1 = String.Empty;
在MSDN中,我不记得看到this.
被使用,除非this.
指的是表单本身,如下所示:
this.WindowState = FormWindowState.Minimized;
这是我们真正应该引用的东西吗?或者,这样做是否有额外的好处?到目前为止,我没有经历任何明显的好处,我没有发现任何变化。
谢谢: - )
答案 0 :(得分:10)
关键字this
通常用作明确变量来源的方式。例如,一个大函数可能有很多变量,使用它可以用来说明正在设置的类的真正属性,以及什么是函数变量。
另外,请考虑下面的示例,其中必须使用关键字来区分类变量和函数参数。
object one;
object two;
public MyClass(object one, object two)
{
this.one = one;
this.two = two;
}
答案 1 :(得分:8)
实际上,您使用this
来引用容器对象。使用this
有时可以解决一些约束案例,如下所示:
public class Person
{
private String name;
public Person(String name)
{
this.name = name;
}
}
但是,您可以通过更改私有字段/变量的名称来避免使用它:
public class Person
{
private String _name;
public Person(String name)
{
_name = name;
}
}
答案 2 :(得分:6)
这意味着这个对象:如果你的形式是一个形式,如果你是一个简单的类,那就是你的类。我们不应该使用它(它是隐含的),但有时您需要它来使代码非常清晰或者在以下情况下是必要的:
class MyClass
{
private int tot = 0;
public MyClass(int tot)
{
this.tot = tot;
}
}
答案 3 :(得分:6)
请查看http://msdn.microsoft.com/en-us/library/dk1507sz(v=vs.71).aspx。大多数情况下,我们使用它来确保我们指的是可能隐藏的类的成员。 MSDN示例是:
public Employee(string name, string alias)
{
this.name = name;
this.alias = alias;
}
答案 4 :(得分:5)
在代码中使用this
关键字将区分哪些区域是您当前所在类的属性和方法。这也意味着我们使用的是实例方法和属性,而不是静态方法和属性。
这也意味着我们必须首先实例化它。
因此,它将提高代码的可读性和含义,特别是在代码将与其他人共享的大型软件开发团队中。
答案 5 :(得分:4)
如果在本地范围内有另一个this.button1
,则需要button1
之类的内容。
答案 6 :(得分:4)
Windows窗体生成器系统地使用this.
表示法,这可能是您看到它的地方。
this.
用于消除歧义。
除此之外,这是一个品味问题,但我相信大多数程序员都不会使用它,因为输入时间很长(但有点可读性,我会说)。
答案 7 :(得分:4)
请记住使用“this”。有时是强制性的。例如,在分配与构造函数参数同名的字段值时,例如
public class MyClass{
private string name;
public MyClass(string name) {
this.name = name; // <== This is mandatory
}
}
答案 8 :(得分:3)
对于编译器来说是一样的。表单具有控件作为字段,添加this
关键字只是让读者了解我们正在使用表单字段
答案 9 :(得分:3)
这是不必要的(如果没有它,代码将正常工作),但它确实使方法或字段所属的位置更加清晰。如果你在最挑剔的设置上使用StyleCop,微软推荐这种风格。
编辑:实际上,大部分时间都没有必要,但正如其他几个答案所提到的,有时需要解决冲突。
答案 10 :(得分:3)
SomeNameSpace.SomeClass.SomeMethod()
SomeNameSpace.SomeClass.OtherMethod()
当你在SomeMethod()
之内时,说你想打电话给OtherMethod()
。使用this
可以防止您每次使用时都必须编写SomeNameSpace.SomeClass.OtherMethod()
。
由于您已经在SomeClass
之内,this
将在SomeClass
内部工作时引用SomeMethod()
。因此,引用OtherMethod()
所需要做的只是:this.OtherMethod()
这是一个很好的快捷方式,如果您需要将SomeNameSpace
或SomeClass
更改为其他名称,也可以让您的程序在将来更容易维护。this
仍将如何工作你想要它。
namespace Foo {
public class Bar {
public void Method() {
// Do Other Stuff
}
public void OtherMethod() {
// Do Some Stuff
this.Method(); // Do Other Stuff
// Instead of Foo.Bar.Method()
}
}
}
答案 11 :(得分:1)
这不是强制性的,但我认为遵循这种做法的主要原因是提高可读性。作为一个例子,它使读者很容易区分局部变量和方法参数。
public class User
{
string firstname;
string lastname;
public User(string firstname, string lastname)
{
this.firstname = firstname;
this.lastname = lastname;
}
}