簡體   English   中英

用這個。訪問內部班級成員?

[英]Use this. to access internal class members?

在互聯網上,我看到很多使用它的代碼。 訪問類的本地成員,如下所示:

private String _whatever;
public String Whatever
{
  get
  {
    return this._whatever;
  }
  set
  {
    this._whatever = value;
  }
}

public void DoSomething()
{
  String s = this.Whatever;
  this.DoSomething();
}

(不要指望代碼做一些合理的事情。我只是想為“this”展示一些不同的用途。)

我想知道為什么要這樣做? 為源代碼添加更多清晰度?
還是只是浪費空間?

這一切都降低了個人偏好和良好做法。

在大多數情況下,它只是無關緊要,但是當您碰巧有一個與私有字段同名的參數時,它可能很重要(無論如何都表示錯誤的命名約定)。

從我個人的角度來看,對參數或字段的任何變量引用或幾乎任何應該足夠清楚而沒有“this”限定符...只有當它不是並且你不能改變它以使它如此時,我用這個。

StyleCop中有一條規則要求 - 人們似乎只是使用它;)

奇怪的是,沒有人提到這一點:它與IntelliSense一起工作得很好。 輸入“this”。 並彈出有效成員名單。 我沒有花太多時間來證明這一點,“好吧,它使標識符的范圍變得明顯”。

IMO:

this._member 

是多余的

this.Property

是有道理的。

這樣做是為了增加清晰度,特別是消除實例成員的參數歧義。 我個人認為

  • 如果你使用在私有變量前放置下划線的約定,那么寫這個._blah是浪費空間
  • 在方法調用之前它是多余的
  • 在房產訪問面前是否有意義是值得商榷的

總而言之,這是一個個人意見問題(盡管如此,與其他一切一樣,你應該保持一致並同意你的同事)。

在此上下文中使用this選項是可選的,但它有助於消除歧義。 代碼生成器總是在這里使用this ,muche比查找是否有必要更容易(這是罕見的)。

程序員使用它作為品味問題。

要考慮的事情:

編譯器不關心,即使我們不熟悉你的類結構,我們這些在你身后工作的人也會確切地知道你的意思

這是一個品味問題。 一些開發商通常this是用來表示引用的對象是類的內部對象。 它只是合成糖。 它還取決於項目的一些命名約定(例如,用下划線開始每個字段名稱)。

this寫入distingish類數據的每個程序員都有其自己的原因。 有時是因為它們習慣了,有時因為它是項目編碼標准所要求的,也許它們正在使用像這樣的工具格式代碼......

此外,如果您在成員變量和參數或局部變量之間沒有區別,就像在帶有下划線的示例中一樣,它很有用。 只是一個風格問題。

這是為了處理以下可能的情況:

private String value;
public String Whatever
{
    get
    {
        return this.value;
    }
    set
    {
        this.value = value;
    }
}

實際上, this. 廣泛用於以下示例中的情況:

struct MyStruct
{
    private int val1;
    private int val2;

    public MyStruct(int val1, int val2)
    {
        this.val1 = val1;
        this.val2 = val2;
    }
}

this. 盡可能使您的代碼更清晰,並排除以下可能的錯誤:

private int myVar;
private void doSmth(int myVar)
{
    // Some code here ...
    myVar = 5; // Are you sure this is one you want to modify?
    // Some code here ...
}

然而,這不是一個嚴格的規則,可能與個人編碼風格有關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM