close
此篇文章轉載於 格子樑/艾偷 郭 大大的 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)
}
}
全站熱搜
留言列表