2014-03-30 36 views
0

在MSDN文章的情況下:含義「這」在結構和

在一個類的實例的構造或實例函數成員,這 被歸類爲一個值。因此,雖然這可以用於將 引用到調用該函數成員的實例,但並不是 可能在類的函數成員中分配給此實例。在結構的一個 實例構造函數中,這對應於結構類型的輸出參數 ,並且在 結構的實例函數成員內,這對應於結構類型的ref參數。在 這兩種情況下,這被分類爲一個變量,並且有可能通過 修改整個結構體的功能成員被調用,或者通過傳遞這個參數作爲ref或out參數。

你能否提供一個結構和類的例子來說明這一點。

+2

在Google上沒有一個「面向對象的編程教程」結果給出了你喜歡的答案? –

回答

4

在一個類中,this關鍵字指的是類的當前實例,或者調用了特定方法的實例。 您也可以在結構中使用this關鍵字,它將引用結構的當前實例。

用法中的結構:

在下面的例子中,this關鍵字用於指該結構的當前實例的字段,以從具有相同的名稱的輸入參數區分它們。在類

public struct BoxSize 
{ 
    public double x; 
    public double y; 
    public double z; 

    public bool HasBiggerVolume(double x, double y, double z) 
    { 
     if ((this.x * this.y * this.z) > (x * y * z)) 
      return true; 
     else 
      return false; 
    } 
} 

用法:

class student 
{ 
    int id; 
    String name; 

    student(int id,String name) 
    { 
     id = id; 
     name = name; 
    } 
    void display() 
    { 
     Console.WriteLine(id+" "+name); 
    } 
    public static void main() 
    { 
     student s1 = new student(1,"NameA"); 
     student s2 = new student(2,"NameB"); 
     s1.display(); 
     s2.display(); 
    } 
} 

輸出將是:

0 null 
0 null 

解該問題:

class Student 
{ 
    int id; 
    String name; 
    student(int id,String name) 
    { 
     this.id = id; 
     this.name = name; 
    } 
    void display() 
    { 
     Console.WriteLine(id+" "+name); 
    } 
    public static void main() 
    { 
     Student s1 = new Student(1,"NameA"); 
     Student s2 = new Student(2,"NameB"); 
     s1.display(); 
     s2.display(); 
    } 
} 

輸出將是:

1 NameA 
2 NameB 

僅供參考,此處給出了6個用法this關鍵字。

  1. this關鍵字可用於引用當前類實例變量。

  2. this()可以用來調用當前類的構造函數。

  3. this關鍵字可以被用來調用當前類的方法(隱式地)

  4. this可以如在該方法調用中的參數傳遞。

  5. this可以在構造函數調用中作爲參數傳遞。

  6. this關鍵字也可以用來返回當前的類實例。

+0

這不就是我們爲同班同學做的嗎? – variable

+0

這看起來像java - 問題被標記爲c#! ;) – Baldrick

+0

@Baldrick:謝謝隊友!編輯答案。 –