C#基礎知識篇(四)-----------C#筆記

來源:互聯網
上載者:User

標籤:style   color   使用   strong   檔案   資料   art   ar   

一.類

1. 什麼叫做類?

    類是具有相同特徵的一類事物統稱。所以類是一種抽象,即不是一個實體(我們把類看做模板)。

2. 什麼叫做對象?

    對象是根據類的模板創造出來的一個實體,它具有類裡所有的特徵,一個也多不得,一個也少不得。少了就不叫這個類的成員了,多了也不是!假如張三有變身這個功能,那麼張三就不屬於人。

    記住對象是根據模板建立的,模板有什麼它就有什麼,不會多也不會少!

3. 什麼叫做欄位(或者是成員變數)?

    我們把定義在方法的外面,類的裡面(即:類中)的變數稱之為欄位或者說是成員變數。

4. 類的定義:(通過class關鍵字建立)

               Class 類名

              {

                 類的成員;
                   }

   注意:類是抽象的不能直接使用,我們只能建立類的對象以後才能使用。(理解:好比類就是我們建房子的圖紙,你總不能對你老婆說我買房了,老婆問你房呢?然後你就給她一張紙,後果你想….)

5. 建立類的對象

    文法:類名 對象名=new 類名();

    注意:其中new關鍵字在上面這句話中做了四件事:

                                                              1> 首先new關鍵字在堆空間裡開闢一塊合適大小的空間。

                                                              2> 按照類的模板建立類的對象。

                                                              3> 調用建構函式

                                                              4> 返回對象在堆空間的記憶體位址。

6. 訪問類的成員:

    文法:對象名.成員。通過上述文法來訪問類的屬性成員和方法。

7. 類的資料類型和this關鍵字

    a. 根據建立對象的文法和原理(即在記憶體中的結構)我們可以知道:類是一種參考型別。

    b. this關鍵字是代表當前執行個體的(或者當前對象的)。

二.命名空間

1. 命名空間的作用?

    命名空間主要是用於解決類的重名。

2. 快速引進命名空間的方法:類名(保證正確)右鍵->解析。

3. 如果多個類在同一命名空間我們則不需要using引進命名空間,直接建立對象執行個體來調用類成員。

4. 我們可以修該預設的namespace名,不要認為在相同檔案夾下就不用using,主要看命名空間是否相同,相同就不需要,不相同就要引進命名空間。

5. 在代碼中使用其他類的時候,需要using引進類命名空間然後再使用。

三.存取修飾詞

一. 類的成員存取修飾詞

       1> public 公有的,public是最高許可權可以在任何地方訪問。

       2> private 私人的,只能在本類中訪問。

       3> internal 只能在當前程式集中訪問。不能跨程式集訪問。

       4> protected 受保護的,只能在本類和子類中訪問,除了自己所在的類和子類就不能訪問的到。

       5> 注意:類的成員預設存取層級是private

二. 類的存取修飾詞

       1> public修飾的類可以在任意地方訪問,但還是要遵行:引進命名空間->建立類的對象->訪問類的成員。

       2> internal 修飾的類只能在當前程式集中訪問。

       3> 注意:如果類沒有寫存取修飾詞,那麼預設的則是:internal;記住類沒有private和protected修飾符(理解:被private修飾的成員只能被當前類的內部使用,若修飾類則在類的內部訪問?

            可有意義?若你寫的類不想被訪問只想自己用?哪你寫類的意義何在?類就是把相同特徵的事物封裝起來供重複使用),若代碼在整個程式中只執行一次完全可寫在Main方法中)。

四.屬性

一. 文法:

              [存取修飾詞] 屬性資料類型 屬性名稱

              {

                       get

                       {

                           return 值;

                       }

                       set

                       {

                           欄位名 = value;

                       }

              }

              簡寫:[存取修飾詞] 屬性資料類型 屬性名稱{get;set;}

二. 屬性的賦值和取值

        1> 在set方法中可以通過關鍵字value得到使用者賦的值。

        2> 取值是通過get方法中return返回。

        3> 屬性的本質是兩個方法。

        4> 屬性不能存值,值是存在欄位中的。若用簡寫我們的vs編譯器會自動幫我們產生兩個私人欄位,實質上操作的還是欄位。

五.對象的初始化器

一. 文法:

         如:Person p=new Person(){name=”tom”,age=18}

              1> 在大括弧中為建立的對象各個屬性賦值,每個屬性用逗號分隔;

              2> 在使用對象初始化器為對象賦值時,若調用的是無參建構函式時,那麼後面的“()”可以省略。

                       例:person p=new person{name=”tom”,age=18}

              3> 後面“()”能省略的前提:

                                                   a.必須是使用對象初始化器為屬性賦值。

                                                   b.必須是調用的無參建構函式,有參建構函式就不行會報錯。

              4> 對象初始化器可以給對象全部賦值也可以只給部分賦值,還有什麼都不做。

                      例:person p=new person{};(是合法的)

六.建構函式

一. 文法:

            [存取修飾詞] 類名(參數)

           {

                 函數體;
                }

      1> 存取修飾詞一般是public.

      2> 建構函式沒有傳回值,連void都不用。

      3> 建構函式可以重載(即可帶參數),在new對象的時候傳遞參數即可。

      4> 如果沒定義建構函式,則系統會有一個預設的建構函式(無參),如果定義了建構函式(不管有參沒參)系統則不會再給我們定義預設的建構函式。

      5> 建構函式在建立對象的時候被new關鍵字調用執行,建構函式不能被程式員手動調用。建構函式中可以調用普通方法,普通方法不能調用建構函式(只能在建立對象時被new調用)。

      6> 建構函式特點:建立對象的同時建構函式中的代碼自動執行。

      7> 建構函式的作用:一般情況下用來給對象的欄位或屬性賦值。哪怕欄位帶了初始值這個賦值過程也是在建構函式中來完成的!若沒帶初始值則在執行建構函式時,給欄位賦預設值,

          實值型別=0,參考型別=null。即建構函式是用來初始化對象的。

      8> 建構函式之間是可以相互調用的

                                        文法: A建構函式():this(參數)  //B建構函式

                                                {

                                                    方法體;
                                                     }

           根據“:this(參數)“來調用,編譯器會根據this後面括弧裡面的參數來匹配所調用的建構函式。

           執行過程:

                      1> 先調用A建構函式

                      2> 再調用B建構函式

                      3> 先執行B建構函式

                      4> 再執行A建構函式

           注意:在給B(被調用的建構函式)建構函式傳參數時,要麼給常量值要麼給A(本建構函式)建構函式的參數,不能給欄位!一個建構函式只能調用一個建構函式(不能掉2個或以上)。

七.部分類

一. 在同一個命名空間下,不能定義多個類名相同的類,因為這樣會起衝突。但是在同一命名空間下如果定義了多個類名相同的類但他們都被partial修飾了,這樣是可以的。因為他們本質上是同一個類(部分類或者夥伴類)。

       因為C#編譯器會把他們編譯為一個類,所以你才可以在一個部分類中使用另一個部分類的成員。

二.滿足部分類的條件:

      1>在同一命名空間。

      2>類名相同。

      3>類都被partial修飾

三.部分類的作用:方便管理,如:定義一個人類,這個類可能有1萬個欄位,我們可以把他們放在一個子類中,便於管理和維護。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.