close
【c#note】this
資料來源:http://www.dotblogs.com.tw/chou/archive/2011/07/27/32188.aspx
http://blog.sina.com.cn/s/blog_96ea9c6f0101crhh.html
this 關鍵字是用來參考物件本身,在類別內部存取本身的方法和欄位,平時並不需要特別加上此關鍵字,即可存取類別成員。
那 this 關鍵字是用來做什麼的? 它最大用途在於區隔類別層級與區域層級變數。
當類別層級變數名稱與位於方法內的區域變數名稱相同時,在區域內必定以區域變數為主,並非使用類別層級的同名變數,我們可以透過 this 關鍵字讓你指定取得類別層級的變數而非區域層級的區域變數。
舉一個例子,範例包含兩個類別 Program 與 Compute,請注意註解部分說明
01 |
using System; |
02 |
using System.Collections.Generic; |
03 |
using System.Linq; |
04 |
using System.Text; |
05 |
|
06 |
namespace ConsoleApplicationThis |
07 |
{ |
08 |
class Program |
09 |
{ |
10 |
static void Main( string [] args) |
11 |
{ |
12 |
Console.Write( "請輸入小數 : " ); |
13 |
double pNum = double .Parse(Console.ReadLine()); |
14 |
|
15 |
Compute MyCompute = new Compute(); |
16 |
MyCompute.Ceiling(pNum); |
17 |
|
18 |
Console.WriteLine( "{0} 無條件進位後等於 {1} !!" , MyCompute.pNum, MyCompute.dCeilingNum); |
19 |
Console.ReadLine(); |
20 |
} |
21 |
} |
22 |
|
23 |
class Compute |
24 |
{ |
25 |
// Compute 類別包含 pNum 與 dCeilingNum 變數 |
26 |
public double pNum; |
27 |
public double dCeilingNum; |
28 |
|
29 |
// Ceiling 方法,傳入名稱同為 pNum 的變數 |
30 |
public void Ceiling( double pNum) |
31 |
{ |
32 |
double dCeilingNum; |
33 |
// 將傳入參數 pNum 指定給類別層級變數 pNum |
34 |
this .pNum = pNum; |
35 |
dCeilingNum = Math.Ceiling(pNum); |
36 |
// 區域變數 dCeilingNum 指定給類別層級變數 dCeilingNum |
37 |
this .dCeilingNum = dCeilingNum; |
38 |
} |
39 |
} |
40 |
} |
執行結果
c# this 的五種用法
1. this的第一种用法:限定被參數隱藏的實例成員,如下例代碼
public class Test
{
private int hour;
public void SomeMethod(int hour)
{
this.hour = hour;
}
}
this.hour 代表的是當前實例的成員hour , 而hour代表的是SomeMethod的形參hour
2. this的第二種用法:把當前對象作為參數傳給另一個方法,如下例代碼
class myClass
{
public void Foo(OtherClass otherObject)
{
otherObject.Bar(this);
}
}
public class OtherClass
{
public void Bar(Object obj)
{
}
}
在myClass.Foo方法中,調用了OtherClass實例的Bar方法,而Bar的參數則是當前實例myClass的引用。
3. this的第三種用法與索引器有關(後續會詳細說明)
4. this的第四種用法是從一个重載構造方法中調用另一個, 如下例代碼:
class myClass
{
public myClass(int i)
{
Console.WriteLine(i);
//...
}
public myClass() : this(42)
{
//...
}
}
使用this(42)調用了public myClass(42)的構造方法。
5. this的第五種用法顯式調用一個類的方法和成員, 如下例代碼:
class myClass
{
private int i;
private int z;
public void Draw()
{
}
public void MyMethod(int y)
{
this.i = 3;
this.z = 7;
this.Draw();
}
}
在這種情况下,this引用的使用是多餘的。
全站熱搜
留言列表