介面所能定義的成員也包括屬性,如同方法成員,屬性的定義只需提供識別名稱以及 get與 set 關鍵字,語法形式如下:
除了不需實作內容,原理與一般類別相同,如果希望定義一個唯讀屬性,則不需使用 set關鍵字,唯寫則不需要 get 關鍵字。考慮以下的 IMessage 介面定義:
其中定義了名稱為 SomeMessage 的屬性,並且設定了 get以及 set 關鍵字,表示這個屬性同時允許讀寫。接下來的 ShowMessage 類別實作這個介面:
其中的 SomeMessage 屬性,提供外部程式存取 private 欄位cMessage所需的功能。
於主程式測試實作介面屬性的效果:
首先建立 ShowMessage 物件 showMessage,並且傳入一行訊息文字。
接下來引用屬性 SomeMessage 取得此屬性值,並且將其輸出。
第二段程式碼重新修改屬性值,然後再次引用message 取得修改後的屬性值將其輸出。
T IProperty { get ; set ; }
除了不需實作內容,原理與一般類別相同,如果希望定義一個唯讀屬性,則不需使用 set關鍵字,唯寫則不需要 get 關鍵字。考慮以下的 IMessage 介面定義:
interface IMessage { string SomeMessage { get; set; } }
其中定義了名稱為 SomeMessage 的屬性,並且設定了 get以及 set 關鍵字,表示這個屬性同時允許讀寫。接下來的 ShowMessage 類別實作這個介面:
class ShowMessage : IMessage { private string cMessage = "" ; public ShowMessage(string pMessage) { this.cMessage = pMessage ; } public string SomeMessage { get { return cMessage ; } set { cMessage = value; } } }
其中的 SomeMessage 屬性,提供外部程式存取 private 欄位cMessage所需的功能。
於主程式測試實作介面屬性的效果:
class Program { static void Main(string[] args) { ShowMessage showMessage = new ShowMessage("Hello, C# !"); string message = showMessage.SomeMessage; Console.WriteLine(message); showMessage.SomeMessage = "Hello, .Net !"; message = showMessage.SomeMessage; Console.WriteLine(message); Console.ReadLine(); } }
首先建立 ShowMessage 物件 showMessage,並且傳入一行訊息文字。
接下來引用屬性 SomeMessage 取得此屬性值,並且將其輸出。
第二段程式碼重新修改屬性值,然後再次引用message 取得修改後的屬性值將其輸出。
Hello, C# ! Hello, .Net !
沒有留言:
張貼留言