C#基礎(1)

來源:互聯網
上載者:User

標籤:

1.byte,int等等,這些簡單類型實際上是BCL基底類別庫類型的別名。

2.所有實值型別都隱式地繼承自System.ValueType類型(System.ValueType本身是一個類類型)。之所以說是“隱式地”,是因為在C#代碼中,是看不見這個繼承關係的,這個關係只有通過MSIL代碼才可以看到,System.ValueType類型和所有的參考型別都繼承自System.Object基類,  

備忘: 在C#多態中,不支援多重繼承的,

類型 繼承 再繼承
int,struct,enum… System.ValueType System.Object
參考型別 可以繼承其他類 System.Object
     

由於不存在多重繼承,那麼實值型別(結構等等)本身就繼承了System.ssValueType,就不能繼承其他類。

3.實值型別與參考型別在   線程堆棧(棧是一種後進先出的資料結構)以及堆(堆是用於為參考型別的執行個體(對象)分配空間的記憶體地區,在堆上建立一個對象,會將對象地址傳給棧上的變數,反過來叫變數指向對象,或者變數引用此對象) 的存放

實值型別(變數本身包含了實值型別的全部欄位),會分配線上程堆棧上;注意一個細節:只有對變數進行操作,才會進行入棧;

4. .NET的一個約束:所有的元素使用前都必須初始化。

//Demo1int i;Console.WriteLine(i);
//Demo2public class Person{    int ID{get;set;}    string Name{get;set;}    List<Book> Books {get;set;}   //定義某個集合作為屬性}

Demo1:error  使用未賦值的變數

Demo2: 在多次使用Person類中,vs會經常提示警告:會出現“NullReferenceException異常”,當然這個異常也分使用情境,但非常希望,你能在Person類的建構函式中,執行個體化Books,this.Books = new List<Book>();這是個好習慣。

5.結構類型 struct

//定義public struct ValPoint{    public int x;    public void Blank()}//調用ValPoint vPoint1;vPoint1.Blank();Console.WriteLine(vPoint);

在調用中報錯,“使用了未賦值的局部變數”,int x,沒賦值。

假設:

//定義  3 個局部變數public struct ValPoint{    public int x;    public int y;    public int z;    public void Blank()}

那麼,我們必須初始化 x,y,z 。還是那個原則:.NET的所有元素,都必須先初始化。

解決這個問題可以通過這樣一種方式:編譯器隱式地位結構類型建立無參數的建構函式。這個建構函式中會對結構成員進行初始化;所有實值型別成員被賦予0或者相當於0的值,所有參考型別被賦予null值;

//調用ValPoint vPoint1 = new ValPoint()

new的作用? 執行個體化?分配記憶體?  不是,注意:結構struct 變數本身就代表一個執行個體。  這裡僅僅調用當前結構的預設建構函式,初始化結構變數中的所有欄位。

//直接調用Console.WriteLine((new ValPoint).x);

.x  前面是個對象,這裡會建立一個臨時變數,沒有名稱,然後再使用結構的預設建構函式對臨時變數進行初始化。

 

C#基礎(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.