[C# 筆記] Encapsulation 封裝
- 型別成員的隱含預設為 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 當中包含的別的型別的成員變數) 可以。
- 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 的方法
- 在 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
- 利用 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