成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

簡單介紹C# User類

開發 后端
本文簡單介紹C# User類,在一個class對象中,主要分為field、property和method,前面兩個對應的是對象的屬性,而method則對應對象的行為。

.Net Framework的類庫功能已經非常強大,但它不可能考慮到業務的方方面面,如果需要使用一個根本就不存在的對象,此時就需要自己來設計了。例如圖書管理系統,可能就需要用戶,圖書等對象。這就需要開發者自己來設計這些對象。

既然最能體現“對象”思想的類型是“類”,我就來介紹一下C#中的類類型。C#中類的關鍵字是class。在一個class對象中,主要分為field(字段)、property(屬性)和method(方法),前面兩個對應的是對象的屬性,而method則對應對象的行為。一個典型的class定義如下所示:

  1. publicclassUser  
  2. {  
  3. privatestringm_name;  
  4. privatestringm_password;  
  5. privateintm_tryCounter;  
  6. publicstringName  
  7. {  
  8. get{returnm_name;}  
  9. set{m_name=value;}  
  10. }  
  11. publicstringPassword  
  12. {  
  13. get{returnm_password;}  
  14. set{m_password=value;}  
  15. }  
  16. publicvoidSignIn()  
  17. {  
  18. if(m_tryCounter<3)  
  19. {  
  20. if(IsValid())  
  21. {  
  22. m_tryCounter=0;  
  23. Console.WriteLine("User{0}wassignedin.",m_name);  
  24. }  
  25. else  
  26. {  
  27. m_tryCounter++;  
  28. Console.WriteLine("User{0}isinvalid.Can’tSignin.",m_name);  
  29. }  
  30. }  
  31. else  
  32. {  
  33. Console.WriteLine("Youtrytosigninmorethan3times.Youarebedenied.");  
  34. }  
  35. }  
  36. publicvoidSignOut()  
  37. {  
  38. m_tryCounter=0;  
  39. Console.WriteLine("User{0}wassignedout.",m_name);  
  40. }  
  41. privateboolIsValid()  
  42. {  
  43. if(m_name.ToUpper()=="ADMIN"&&m_password=="admin")  
  44. {  
  45. returntrue;  
  46. }  
  47. else  
  48. {  
  49. returnfalse;  
  50. }  
  51. }  

字符串m_name,m_password,m_tryCounter就是類User的字段,Name,Password是類User的屬性,而SignIn、SignOut和IsValid則是類User的方法。

前面說到對象好比是一個積木,設計者需要定義好這個積木的外觀和形狀,也要考慮積木內部的制作,例如選用的材質,以及是空心還是實心。如果將這個積木剖開來看,實際上該對象應分為內、外兩層。由于使用者只關心外部的實現,因此設計者就需要考慮,哪些實現應暴露在外,哪些實現應隱藏于內。這就體現了對象的封裝的思想。

封裝對象,并非是將整個對象完全包裹起來,而是根據具體的需要,設置使用者訪問的權限。在C#中,分別用修飾符public,internal,protected,private設定,分別修飾類的字段、屬性和方法,甚至于類對象本身:
◆public:表明所有對象都可以訪問;
◆protected internal:表明同一個程序集內的對象,或者該類對象以及其子類可以訪問;
◆internal:表明只有同一個程序集的對象可以訪問;
◆protected:表明只有該類對象及其子類對象可以訪問;(關于繼承,會在以后介紹)
◆private:表明只有對象本身在對象內部可以訪問;

可以看出,public的開放性***,其次是protected internal,private的開放性最小。internal和protected居中。那么,internal和protected哪一個開放范圍更大呢?我認為,沒有完全絕對的結論。它們的范圍前者體現一個橫向的概念,后者則體現縱向的概念。如果是internal,那么外部程序集對象自然不能訪問,但只要是居于同一個程序集中,則所有對象都可以訪問它;如果是protected,那么即使是外部程序集對象,只要它繼承了該對象,就可以訪問,而即使是同一程序集,如果對象不是該類對象的子類,也是無法訪問的。打一個比方,在我們的傳統文化中,是非常強調“宗族”觀念的,一個宗族的族長,對于本族人而言,權力極大,甚至掌握了生殺大權。以一個州府的范圍為例,internal就好比是知府大人,只要是該州府的百姓,都屬于他的管轄范圍,而不管他是哪一個宗族。protected則好比是宗族的族長,只要是這個宗族的成員,都要服從他,哪怕該成員屬于其他州府。我以前看過《雍正王朝》,其中就有這樣一個情節,身為皇子的胤禎,竟然無法挽救自己心愛女人的命運,因為這個女人違反了她們宗族的族規,***眼看著她被活活燒死,卻只能黯然神傷,夢里縈回。

以前面定義的C# User類而言,所有的字段m_name,m_password,m_tryCounter都是private的,因此C# User類的外部調用者無法調用它們,但請注意User類內部的方法比如SignIn或者屬性Name,卻完全可以調用。同樣的,private方法IsValid,可以被SignIn方法調用,但對于外部調用者而言,則是無法調用的。而對于public屬性Name,Password,public方法SignIn和SignOut,外部的調用者是可以訪問的。在后面的演練中,我們能夠看出這之間的區別。通過這樣分層次的封裝,就可以充分保證對象的重用性和安全性。

那么對于類類型而言,如何確定它們的訪問權限呢?這要根據實際的需求來看了。假定這個User類是用于一個電子商務網站。那么電子商務系統在設計過程中,就需要調用到C# User類對象。顯然,登錄與退出功能是必須提供給外部使用者的,例如登錄頁面就會使用到C# User類。而IsValid()方法用于驗證用戶的合法性,雖然也非常必要,但該功能僅僅用于登錄的時候核實用戶身份,也就是說,IsValid方法只會被 SignIn方法使用,但外部實用者卻并不關心,因此,設置為private就是合理的。同樣的道理,字段m_tryCounter也是如此。但如果需求發生改變,驗證用戶的功能不僅僅是登錄的時候需要使用,在添加商品到購物車,下訂單,付款的時候,都需要該功能,那么IsValid方法,就有必要修改為 public方法了。

所以,在設計程序的時候,除了要考慮識別對象,還要充分考慮該對象的封裝。類對象內的字段、屬性和方法,包括類本身,哪些應該暴露在外,哪些應該被隱藏,都需要根據實際的需求,給與正確的設計。

【編輯推薦】

  1. 分析C#不安全代碼
  2. 淺析C#調用ImageAnimator
  3. C#連接Access、SQL Server數據庫
  4. 淺談C#固定的和活動的變量
  5. 介紹C#中的值類型
責任編輯:佚名 來源: 天極開發
相關推薦

2009-08-27 13:37:11

C#類和結構

2009-09-02 14:33:57

C#類實現接口

2009-08-12 09:41:28

C# Director

2009-09-03 15:57:11

C# SystemMe

2009-08-03 17:51:43

C#引用類型

2009-08-13 17:36:54

編譯C#代碼

2009-09-03 09:40:57

C#創建表單

2009-08-06 18:15:13

C# SQL Serv

2009-09-01 16:19:57

C# new()約束

2009-08-20 16:25:59

C# 匿名方法

2009-08-25 13:38:35

C# Timer組件

2009-08-07 17:12:07

C# DLL函數

2009-08-14 16:46:44

C#元數據

2009-08-14 17:27:56

C#方法參數

2009-08-21 17:55:52

C#復合控件

2009-08-27 10:19:22

C#匿名類型

2009-08-07 17:41:40

C#預處理

2009-08-10 16:19:37

C#冒泡排序

2009-08-18 17:37:57

C#固定指針

2009-08-25 14:42:41

由C++轉向C#
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 秋霞a级毛片在线看 | 国产成人精品网站 | 国产精品1区2区3区 欧美 中文字幕 | 黄色国产在线视频 | 日韩视频免费看 | 精品国产乱码久久久久久丨区2区 | 粉嫩高清一区二区三区 | 91最新在线视频 | www日本高清 | a毛片| av一级久久 | 五月婷婷在线视频 | 国产欧美日韩 | 丝袜美腿一区二区三区 | 黄片毛片免费观看 | 午夜精品久久 | 成年人网站免费 | 精品日韩一区二区 | 国产精品人人做人人爽 | 亚洲丝袜天堂 | 国产精品一区二区不卡 | 久久免费精品视频 | 欧美精品久久久 | 亚洲男人网 | 日本天天操 | 亚洲国产精品久久久久久 | 黄网站色大毛片 | 视频一区二区在线观看 | 伊人精品在线 | 18性欧美| 中文字幕日韩欧美 | 免费黄色片在线观看 | 亚洲人精品午夜 | 高清视频一区二区三区 | 视频一区二区在线观看 | 欧美日韩在线看 | 中文字幕在线一区 | 欧美精品一区二区免费 | 日韩成人精品一区二区三区 | 51ⅴ精品国产91久久久久久 | 羞羞的视频免费在线观看 |