在Getter方法中使用'this'关键字?

时间:2016-08-07 14:41:46

标签: c# methods this keyword getter

public string GetTitle()
{
    return title;
}

正如您在上面的代码中所看到的,在GetTitle()方法中,它被用于返回标题实例变量。我的问题是,如果我添加'this'关键字使得GetTitle()方法变为如下所示,会有什么不同:

public string GetTitle()
{
    return this.title;
}

我没有在书中看到过一个例子,也没有看过后者的任何例子。但我在Visual Studio中尝试了这个,它仍然做同样的事情。

请有人解释一下有什么区别吗?

谢谢! :)

6 个答案:

答案 0 :(得分:4)

  

请有人解释一下有什么区别吗?

之间没有任何区别:

public string GetTitle()
{
    return title;
}

和此:

public string GetTitle()
{
    return this.title;
}

this指的是该类的实例。因此,您可以titlethis.title来访问该字段。

但是,我没有看到上述方法用于定义getter和setter。您可以使用以下语法,而不是遵循上述方法,以实现相同的目的:

public string Title { get; set; }

并且只要您想阅读Title,就可以使用以下

classInstance.Title

如果您想设置它的值,只需使用以下内容:

classInstance.Title = "your title";

在这两种情况下classInstance,因为它的名字暗示是你班级的一个实例。

值得注意的是,上述内容称为自动实现属性。在此之前,你可以做同样的事情的唯一方法是:

private string title;
public string Title
{
    get { return title; }
    set { title = value; }
}

现在,只要您想在getset中应用任何逻辑,就会使用以下语法。如果不是这种情况,那么通常会遵循自动实现的属性方法,因为它更紧凑。

答案 1 :(得分:1)

public void SetTitle(string title)
{
 this.title = title;
}

仅在这种情况下需要this,因为membervariable和参数具有相同的名称。

如果参数被称为this或者除了成员变量以外的任何其他名称,如果有或没有intitle,则没有任何区别。

答案 2 :(得分:1)

this (C# Reference)

  

this关键字引用类的当前实例,并且是   也用作扩展方法的第一个参数的修饰符。

那说它确保引用的字段是当前实例的本地字段。

在您的特定上下文中,如果字段/变量是本地的,则它们将表示相同的内容。

如果该字段是静态的,则以下示例将失败

static string title;
public string GetTitle() {
    return this.title;
}

这仍然可以编译,但所有实例都将引用相同的静态字段

static string title;
public string GetTitle() {
    return title;
}

它通常用于限定由类似名称隐藏的本地成员,例如:

public void SetTitle(string title) {
    this.title = title;
}

答案 3 :(得分:0)

实际上,您可以使用它或避免,属性的上下文没有区别。因为当我们使用这个属性时,我们也使用相同的实例来使用变量。

如果你使用Resharper或类似的应用程序,那么它会建议你使用它。基本上,使用this关键字以及最佳实践更安全。除了它没有区别之外

使用this个关键字时,您可以查看此答案here

答案 4 :(得分:0)

public string GetTitle()
    {
        return this.title;
    }

没有区别,添加“this”关键字不是必需的,但是如果它对你来说更清楚,你可以添加它。它只是更明确。

  • -

    public string GetTitle()     {         回报标题;     }

    public void SetTitle(string title)
    {
        this.title = title;
    }
    

在SetTitle(字符串标题)方法中添加“this”关键字是必要的,因为您需要区分要更改的“标题”变量。通过添加“this”,您指的是对象“title”变量,而不是参数。

答案 5 :(得分:0)

代码1:

 public string GetTitle()
    {
        return title;
    }

代码2:

  public string GetTitle()
    {
        return this.title;
    }

代码1和2没有任何区别。

两个代码都有相同的输出。我要分享的一件重要事情是this包含用于调用此reference

GetTitle()对象