Fork me on GitHub

12/20/2009

[C# 筆記] Encapsulation 封裝

  • Access Modifiers: 
    • 型別成員的隱含預設為 private, 型別的隱含預設為 internal 
    • Internal items are accessible only within the current assembly. Therefore, if you define a set of internal types within a .NET class library, other assemblies are not able to make use of them.
    • 希望類別創建的物件可以讓外部 assembly 使用就要把 class 加上 public,若希望類別當中的成員可以讓其他類別使用,也要將類別成員加上 public 。
    • 一般 class 不能加上 private,但是巢狀型別 (class 當中包含的別的型別的成員變數) 可以。
  • 利用 Type Properties 進行封裝
    • Properties make your types easier to manipulate, in that properties are able to respond to the intrinsic operators of C#。
    • A property really maps to a get_/set_ pair! 因此不能在類別當中在宣告 get_xxx, set_xxx 的方法
  • Properties 的  Visibility 
    • 在 get 或 set 之前加上 accessibility keyword (e.g. "protected")。
    • Read-Only / Write-Only 的 Property: 拿掉 get 或 set 其中一個即可。
    • The benefit of properties is that the users of your objects are able to manipulate the internal data point using a single named item
    • Constant Data
      • 利用 const 這個 keyword 定義在初始化之後其值不在改變的資料。
      • const field 隱含為 static,可以直接透過類別存取。
      • constant data 在 compile 的時候就必須知道該值,因此 const data 在宣告之後一定要給定初值。
    • Read-Only Fields (勿與 read-only property 混淆)
      • 剛好跟 const 不同,read-only field 可以不必在宣告之後馬上給定初值,因此可以透過建構子來指定初值 (讀取外部資料時有用)。
      • read-only field 並非隱含 static,如果設定成 class 層級,要加上 "static"。
    •  Partial Types
      • 允許你在多個 .cs 檔案中定義型別 (e.g. 可以將 properties 和 constructor 放在一個 .cs 檔,field data 和 type method 放在另外一個 .cs 檔)

      No comments:

      Post a Comment