C 學習第四天

2021-06-07 05:12:21 字數 1666 閱讀 2608

匿名類:

/*原理:編譯器根據初始化值推斷變數的真正型別.。var只能在初始化變數時使用(編譯器要根據初始值固化其正真型別),例如var myint = 100;編譯器會推斷出myint為int型別。

而var myint ; myint = 0;//錯誤。因為編譯器無法知道myint的具體型別,也就無法後續對其進行各種操作了(包括賦值等操作)。

一旦編譯器確定了變數的型別,就不能更改,也即不能賦予不符合其型別的值了。*/

/** entry為匿名類,匿名類有諸多限制:

* 1、匿名類必須只具有public屬性,且必須初始化屬性

* 2、不可以具有static屬性或字段

* 3、不可以有任何方法

*/var entry = new ;

console.writeline(entry.name+":"+entry.address);

var(隱式變數)只能用於變數初始化,且只能是區域性變數。不能用於函式返回值或引數。

當然,如果返回值是object型別,也可以,但無實際意義。

可空型別

如果乙個值型別想變成可空型別,只需在型別後面使用?即可。例如 int? i=null;此時i可以賦予null(引用型別)了。

可以將值型別常量或變數賦予可空型別變數。例如

int? i=null;

i = 100;

int j=500;

i=j;

但不能將可空型別值型別賦予普通值型別變數。例如:

int? i = null;

i = 100;

int j=i;//error。

可以使用hasvalue來判斷可空型別是否有值(即不是null),如果有返回true,否則為ifalse。

使用value屬性獲取其值(真正的值,而非null。因此需要在進行hasvalue判斷後使用,否則如果可空型別為null,呼叫value時將丟擲異常:可空型別value不能是null,必須有乙個值。)

可空型別實際是引用型別,所以,它的儲存位置是堆。

//裝箱 拆箱

/** 裝箱

* 原理:由於object是引用型別,而引用型別絕對不能引用棧上的資料,所以oo實際引用是這樣的:

* 首先在堆記憶體區開闢一小塊記憶體,把bi(棧記憶體資料)的值複製乙份賦予該堆記憶體,之後把該堆記憶體位址返回給oo。

* 結果:bi和oo互不影響。

*/int bi = 10;

object oo = bi;

bi = 108;

oo = 88;

console.writeline("bi = " +bi+";oo="+oo);

/** 拆箱

* 拆箱需要強制型別轉換。如果堆記憶體中的資料與要轉換的值型別不匹配,將發生轉換失敗異常。

* 例如 object o = new person(); int a = (int)o;將會轉換失敗(拆箱失敗)。

* 原理:如果發現oo是引用型別,就把對應堆記憶體中資料複製到對應的值型別棧記憶體中去。

* 結果:互不影響

*/int myi2 = (int)oo;//如果oo = person將會轉換失敗

console.writeline("myi2 = "+ myi2);

第四天學習

一 權重關係 樣式表的權重關係 內聯樣式表的權重最大!內部和外部樣式的權重,和書寫的前後順序有關!放在後面的會把放在前面的樣式覆蓋掉 網頁的布局 先做上下排版 再做左右排版 從外往裡 二 css語法 選擇符選擇符 選擇符就是給標籤起名字 型別選擇符 標籤選擇符 所有的html標籤可以直接當做選擇符進...

c 學習之路(第四天)

溫習一下記憶體分布模型 c 在執行 的時候。將記憶體大致劃分為4個區域 區 文字區 存放 的 二進位制 作業系統管理 全域性區 存放全域性變數和靜態變數 堆 由程式設計師分配釋放 棧 作業系統分配釋放 靜態成員是指宣告為static的類成員在類的範圍內所有物件共享某個資料。靜態成員函式只能訪問靜態資...

C 基礎學習第四天

c 的基本 型別分為兩組 一組由儲存為整數的值組成,另一組由儲存為浮點數的值組成。整型之間通過儲存值時使用的記憶體量和有無符號來區分。整型從最小到最大依次是 bool,char,signed char,unsigned char,short,unsigned short,int,unsigned i...