method, property問與答
By Allen Kuo, 建立日期:2008/04/25 10:24 ,最後修改日期:2008/04/25 10:42
有位網友初學C#,問了我一些入門問題,我將它整理在這裡,供其他初學者參考
|
加入書籤:
|
| 問 |
答 |
(1)跳到(1-1)執行,把helloMessage訊息return回來時,為何不會把下行的set也執行完再跳回呢??
(2)跳到(2-1)執行,為何是跳到public string accHelloMessage裡執行set 而不是順序執行get 再執行set敍述呢?? |
|
| |
您程式寫
myClass.accHelloMessage時,是呼叫property,並取得值,所以只會run到get{}, 如果您程式寫成
myClass.accHelloMessage=”ABC”, 才會run到set{}
二者是不同的 |
| value是要怎運用,用別的字眼不行嗎??為何value會知道要等於myClass.accHelloMessage = "這是用來測試的字串訊息!!" |
|
| |
在寫property時, value是保留字, 表示傳入的值,不可以用別的 |
(3)public void ShowMessage()與
(4)public string accHelloMessage 的寫法不太一樣(上面的有括弧),是否懇請您告訴我一下呢?
|
|
| |
如果要寫method,是寫成
Public void xxx(){…}
如果要寫property,是寫成
Public void xxx{
get{…}
set{…}
}
端看你要寫的是method or property而定
此外, method可以寫成
Public void xxx(){…}
也可以寫成
Public void xxx(int aaa){…}
也可以寫成
Public void xxx(int aaa, string bbb){…}
從這些例子可以看得出來,
Public void xxx(){…}
也表示小括號裡,不必傳入值
|
myClass.accHelloMessage時,是呼叫property,並取得值,所以只會run到get{}, 如果您程式寫成
myClass.accHelloMessage=”ABC”, 才會run到set{}
以上兩行我還是不太懂,可否舉例一個小程式呢
|
|
| |
Method,只能供呼叫,例如
xxx.Start();
xxx.Stop();
xxx.Insert(“Allen”,”Taipei”);
呼叫method時,能不能傳入引數,端看當初method是如何設計的
但Property並無法傳入引數
xxx.Name = “Allen”; //這會呼叫set{….}那段code
string userName = xxx.Name; //這會呼叫get{….}那段code
|
method and property的在使用上,我可能寫得出來,但會分不清楚到底
何時需用那一個或為何要選那一個..??
|
|
| |
通常method用來做”動作”,例如xxx.Delete(), DataTable dt = xxx.Select(“city=’Taipei’)
而property用來取得或指定某項特質,例如 xxx.Color=”red”, xxx.Width=100;
|
討論的程式碼
using System;
class UsingObject
{
static void Main(string[] args)
{
CreateClass myClass = new CreateClass();
myClass.ShowMessage();
Console.WriteLine(myClass.accHelloMessage); (1)
myClass.accHelloMessage = "這是用來測試的字串訊息!!";(2)
myClass.ShowMessage();
Console.ReadLine();
}
}
public class CreateClass
{
string helloMessage = "這是原始測試訊息!!";
public void ShowMessage() (3)
{
Console.WriteLine(helloMessage);
}
public string accHelloMessage (4)
{
get { return helloMessage; } (1-1)
set { helloMessage = value; }(2-1)
}
}
|