使用 Google 搜尋本站文章:
首頁 | CodeCharge 討論板 | 部落格 | ASP.NET 電子書 | 所有文章 | 相簿 | News | 網站導讀 | 聯絡 Allen | 訂閱 RSS
Microsoft MVP 
since 2004 
 

略過巡覽連結。

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


目前節點的文章 :

 初學者應該先學的 .NET Framework 物件
 namespace(命名空間)與Imports,Using的用途
 如何宣告C#變數及四則運算
 C# method,如何寫 optional 引數
 判斷字串長度
 四捨五入的規則
 C# 字串變數, 如何包含雙引號或反斜線
 如何找出 Array 裡是否包含所需要的 item
 C# method ,property 等基礎語法比較
 如何設計 class (入門)
 型別轉換
 Microsoft 提供的 Visual C# 範例
 method, property問與答
 如何做到 10000 顯示成 NT$ 10,000
 傳入 RGB, 傳回 html 的色碼
 列出某 folder 之下的所有 folder 清單
 檔案 I/O & 遞迴搜尋目錄
 判斷字串是檔案或資料夾
 一些 DateTime 處理函數
 DateTime.TryParse()的注意事項
 如何取得本週的第一天是哪一天
 interface 簡介
 如何做出可依 key/value 排序的物件
 泛型裡的Constructor Constraints - new()
 如何在將物件序列化時, 指定根節點的名稱

Copyright © AllenKuo.com , 2000 - 2010