c# - 为什么 Visual Studio 提示我不要对实例变量使用 `this` 关键字?

标签 c# this

对于如下定义的类,我希望我需要通过在实例变量前加上“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
    }
}

最佳答案

因为没有冲突的局部作用域描述变量,在这种情况下使用类型或实例成员。

优先顺序

  1. 局部变量
  2. 实例成员
  3. 类型(静态)成员

因此,如果您有一个也名为 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/

相关文章:

c# - .NET 依赖管理和标记/分支

reactjs - 如何在 React 函数内部的递归函数中绑定(bind) this?

javascript - 从函数内部获取元素

javascript - 对象方法中的冗余 Javascript this?

javascript - 在有状态 React 组件中更改 <select> 值的正确方法

c# - 如何在非托管内存中实例化 C# 类? (可能的?)

c# - 创建日历控件的想法

javascript - react : this is null in event handler

c# - 通过方法将现有的 IEnumerable<int> 转换为字符串 (#,#,#,..)

C#编译错误: “X is inaccessible due to its protection level”