# 技術-C#-Get/Set; Try catch ## get/set存取子 Accessors ### 概念 + class的屬性(Property)可以讓讀、寫、運算機制變得更有彈性。存取子(accessors)是屬性的一個特殊的methods,包含get存取子、set存取子。 + 存取子的功用:在一般情況下,將變數的狀態屬性設定為string,就只能用來存取字串,int就只能用來處理整數。在class中,這些狀態屬性就可以透過存取子做額外加入邏輯判斷等描述式。 ### get/set method >get和set是用在設定class的屬性時, 如果要設定可以被外界唯讀的話,就是用get取值, 如果要設定成唯寫,就要用set去寫入它的值, 如果要可以寫又可以讀(取值),就要同時寫上get和set。 範例: > class MyClass { string name = ""; //此為private,外界無法看到該屬性 public string Name //此為public,外界可以看到該屬性 { get { return name; } set { name = value; } //set要搭配value這個關鍵字使用,value就是要寫入的值 } } class Program { static void Main(string[] args) { MyClass myob = new MyClass(); myob.Name = "Jane"; //寫值 Console.WriteLine(myob.Name); //取值 myob.Name = "Silvia"; //寫值 Console.Write(myob.Name); //取值 } } ## Try catch + 例外處理,可以處理一些未知且發生錯誤的情況,例如: 輸入不合法(型別不符)的值、找不到要開啟的資料、處理資料時突然失去連線…。 + 在C# 例外處理使用 try-catch 陳述式。 + 只要將一般陳述式放在try區塊,當try區塊發生發生時,就會移向catch區塊,用Exception擷取錯誤。 ![](https://i.imgur.com/684JxbA.png) ### Exception types + catch可以透過Exception來捕捉錯誤 + 也可以指定要捕捉哪種 Exception 錯誤,例如捕捉找不到檔案時發生的錯誤、記憶體不足的錯誤…等。 ![](https://i.imgur.com/nJBkbPp.png) ![](https://i.imgur.com/cAeCNkt.png) ### Finally + try-catch 也可以搭配 Finally。 + 無論是否拋出異常,都會執行finally區塊。 ![](https://i.imgur.com/Vk63fGo.png) ## 參考資料 [get , set (C#)](https://blog.xuite.net/sunnysoap/r/65597736) [C# GET & SET 存取子(ACCESSORS) - 教學筆記 (使用VISUAL STUDIO)](https://adon988.hoohoo.top/blog/1184067/) [C# TRY-CATCH 例外處理(EXECPTION HANDLING) - 教學筆記 (使用VISUAL STUDIO)](https://hoohoo.top/blog/exception-handling-in-c-teaching-notes-using-visual-studio/)