※ 引述《rz2x (弗朗西爾我婆)》之銘言:
建議筆記要調整一下順序
# Value type
每次assignment都是pass by value.
int a = 1;
int b = a;
b = 3; // a == 1
# Reference type
每次assignment都是pass by reference. 所有reference指向同一物件
class foo{public int bar;};
foo f1 = new foo();
f1.bar = 0;
foo f2 = f1;
f2.bar = 2;
Console.WriteLine(f1.bar) // 2 因為f1 f2指向同一人, 容易出bug
Live demo: https://dotnetfiddle.net/z5NhhX
: 5.Class:類別,質型別,包含屬性及方法,記憶體位在Heap上,可繼承
: 6.Struct:結構,參考型別,包含屬性及方法,記憶體位在Stack上,不可繼承
C# class: reference type.
C# struct: value type.
為什麼重要,主要是reference type, value type的特性差異
stack & heap在C#算是implementation detail 不用太在意
見"The Truth about Value Type"
https://ericlippert.com/2010/09/30/the-truth-about-value-types/
: 9.Field:欄位,不具有get或set的變數
: 10.Property:屬性,具有get或set的變數
getter setter可以做什麼? 有什麼好處? 才是他的意義
: 16.Stack:存放值的記憶體區塊,系統自行配置。記憶體釋放順序為先進後出。
: 17.Heap:存放參考類型(物件)的記憶體區塊,由使用者配置,若其中的指向為空,則記
: 憶體由GC自動釋放。
同上 Eric Lippert那篇看完你可以跟面試官討論:allocation的位置在C#重要嘛?
: 18.修飾子: public、private、protect、internal、sealed
應該說是access modifier
unsafe這種也算modifier
: 21.GC:Garbage Collection垃圾回收機制,系統自動搜尋記憶體中那些部分是曾用到但
: 現在不使用的,找到後會進行記憶體釋放,其觸發時間不固定
What are GC Generation 0/1/2?