深入理解C 學習筆記之走出誤區

2022-01-20 01:08:47 字數 648 閱讀 3535

通過學習深入理解c#這本書,發現自己對於c#這門語言一直存在著三個誤區。

第乙個誤區:結構是輕量級的類:

我一直認為值型別不應該具有方法或其他有意義的行為,它們只應該具有一些簡單的屬性。但書中總結了乙個反例datetime型別,datetime是值型別,,它理應被賦予對它的值進行計算的能力。總之,值型別和引用型別具體如何決定,應取決於需要的值型別的語義,而不是取決於這個型別的簡單與否。

第二個誤區:引用型別在堆上,值型別在棧上:

引用型別的例項總是在堆上建立的,這句話是正確的,但是值型別總是在棧上建立的,就有問題了。假定有乙個類,這個類中有乙個int型別的例項變數,那在這個類的任何物件中,這個int變數的值總是和物件中的其他資料在一起,也就是堆上。

第三個誤區:物件在c#中預設是通過引用傳遞的:

引用型別變數的值是引用,而不是物件本身,不需要引用傳遞引數本身,就可以更改該引數引用的那個物件的內容,如下面的這個小例子:

呼叫這個方法時,引數值(對某stringbuilder的乙個引用)是以值傳遞的方式傳遞的。

在c#中,無論是引用傳遞還是值傳遞,物件本身永遠不會被傳遞,涉及到乙個引用型別時,要麼是以引用型別來傳遞變數,要麼是以傳值的方式來傳遞引數值引用。

學習筆記 CSS深入理解之float

張鑫旭的css深入理解之float浮動學習筆記float為產生文字環繞效果而生 包裹 即產生乙個bfc 破壞 使父容器塌陷,元素脫離文件流,產生inline boxes環繞 方式一 使用clear,類似於產生乙個連線索道,使前文和後文關聯,會產生margin重疊效果。方式二 父容器bfc或者hasl...

學習筆記 CSS深入理解之margin

張鑫旭的css深入理解之margin學習筆記前提 只應用於block元素 不考慮writing mode的情況下,只發生在垂直方向 場景 兄弟元素發生重疊 父元素和第乙個 最後乙個子元素發生重疊 margin bottom重疊 最後乙個子元素設定margin bottom相對于父元素設定margin...

CSS深入理解學習筆記之relative

1 relative和absolute的相煎關係 限制作用 限制left top right bottom定位 限制z index層級 限制在overflow下的囂張氣焰。relative和fixed限制作用 限制z index層級。2 relative和定位 特性 相對自行進行定位 無侵入,不影響...