--- title: C# Class類別 介紹 tags: tutorials disqus: hackmd --- <style> .text-center{ text-align: center; //文字置中 } .text-left{ text-align: left; //文字靠左 } .text-right{ text-align: right; //文字靠右 } </style> # C# Class 類別 介紹 ## 1. 什麼是 Class 類別? 類別是一種定義資料結構的外觀及資料如何儲存、管理及傳遞的==模板==。 類別是物件的概念與結構宣告,物件則是類別的實體。 類別是物件導向(OOP)程式語言的基礎靈魂,程式再建立實體物件,並對物件做運算等等動作。  <p class="text-center"> 【圖一】 C#中撰寫範例 <br/> 圖中可知在C#中以Class{...}來定義一個類別,<br/>類別定義是一個全域宣告的概念,<br/> 類別要放在namespace{...}內,但不能放在方法中。 </p> ## 2. Class架構 類別內可以有建構函式 (Constructor)、屬性 (Properties)、欄位 (Field)、方法 (Method)  <p class="text-center"> 【圖二】 C#中撰寫範例 </p>  <p class="text-center"> 【圖三】 C#中主程式呼叫圖二中的Class<br/> 建立實體物件,透過建構函式把送入的參數指給物件中的欄位,<br/>並馬上印出這個物件的資訊。 </p> ## 3. 存取修飾詞 存取修飾詞就是你在圖一~圖三在宣告一些物件時前面會有的key word <table> <thead> <tr> <th>存取修飾詞</th> <th>作用</th> <th>存取範圍</th> </tr> </thead> <tbody> <tr> <td>public</td> <td>公開</td> <td>無限制</td> </tr> <tr> <td>private(預設)</td> <td>私有</td> <td>只有本身類別可以存取</td> </tr> <tr> <td>protected</td> <td>保護</td> <td>父類別或繼承自父類別的子類別(衍生類別)</td> </tr> <tr> <td>internal</td> <td>內部</td> <td>限於目前專案(組件)</td> </tr> <tr> <td>protected internal</td> <td></td> <td>限於目前專案或是繼承自父類別</td> </tr> <tr> <td>private protected</td> <td></td> <td>存取限於目前專案內包含類別或衍生自包含類別的類型,自C#7.2起可用。</td> </tr> </tbody> </table> ==注意:namespace是不能使用存取修飾詞的== ## 4.屬性 (Properties)與欄位 (Field) 他們倆個的關係是這樣的 欄位可以做到的事情屬性一定可以做, 屬性可以做的事情欄位不一定能做。 屬性筆欄位多的功能是他可以寫程式在get set裡 用程式去控制數值  <p class="text-center"> 【圖四】 屬性與欄位差異 </p>  <p class="text-center"> 【圖五】 屬性這樣簡單寫存取邏輯,可以偽裝成欄位 </p> ## 5.方法 (Method) 方法就是你呼叫此類別中的某一個方法 他就會執行你要做的動作  <p class="text-center"> 【圖六】 方法的撰寫 </p>  <p class="text-center"> 【圖七】 主程式以圖六的類別時作一個物件後,呼叫此物件裡的方法。 </p>  <p class="text-center"> 【圖八】 方法支援多載(照理說兩個方法命名不可以一樣,但一個要送入參數一個不用這樣是可以的) </p> ## 6.建構函式 (Constructor)(建構子) 建構函式顧名思義就是你去定義這個類別被new(類似build的意思)時要跑的函式。 下面有兩個例子一個有寫建構函式一個沒寫。  <p class="text-center"> 【圖九】 有建構子 </p>  <p class="text-center"> 【圖十】 沒有建構子 </p> [[參考]C#-怎麼建立類別Class及其建構函式Constructor(建構子)、屬性 (Properties)、欄位 (Field)、方法 (Method)](https://ithelp.ithome.com.tw/articles/10213236?sc=rss.iron) --- ###### tags: `tutorial`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up