对于如下定义的类,我希望我需要通过在实例变量前加上“this”前缀来显式声明实例变量。来自 Ruby 和 Javascript 背景,我期望 description
需要在声明中以 this
为前缀,并且在构造函数中,this
将是必需的。
为什么不需要?我假设 description
仍被创建为实例变量?
public class Item
{
private string description;
public Item(string str)
{
this.description = str; // VS says the 'this' keyword can be omitted
}
}
最佳答案
因为没有冲突的局部作用域描述变量,在这种情况下使用类型或实例成员。
优先顺序
- 局部变量
- 实例成员
- 类型(静态)成员
因此,如果您有一个也名为 description
的局部变量,但您想要引用实例成员,则需要 this
否则您将始终引用局部变量。
这是一个您应该使用 this
public class Item
{
private string description;
public void SetDescription(string description)
{
this.description = description; // without this you would just be setting the local variable to itself
}
}
关于c# - 为什么 Visual Studio 提示我不要对实例变量使用 `this` 关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41894805/