close

此篇文章轉載於 格子樑/艾偷 郭 大大的  method, property問與答

By Allen Kuo, 建立日期:2008/04/25 10:24 ,最後修改日期:2008/04/25 10:42
有位網友初學C#,問了我一些入門問題,我將它整理在這裡,供其他初學者參考
    加入書籤: 收進你的MyShare個人書籤

 

(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)
    }
}

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 kingjoy1235 的頭像
    kingjoy1235

    King的幸福國度

    kingjoy1235 發表在 痞客邦 留言(0) 人氣()