Re: [心得] C#基礎名詞解釋

軟工

18141

建議筆記要調整一下順序
# 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?

--
等等,我是不知道妳是看了什麼神槍手的故事,可是為什麼要拿我當靶 (′Д‵)
什麼!是黃忠和后羿的故事?他們拿的不是銃,是弓!
長門,妳手上拿著蘋果跟繩子是作什麼?今天晚餐不是關東煮是烤乳豬嗎?
連爸爸都沒弄痛過我,可不可以不要綁這麼緊,好歹鬆一點讓我有空間逃吧,古泉。
好,我認了,要射就射吧,可是請聽一下在我死前的最後一個願望。
不 要 拿 霰 彈 來
.....噗滋(腦漿聲) 摘自「阿虛的最後一餐」

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.231.136.89 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1642776760.A.F75.html
godsparticle1樓推這篇 01/22 05:55
a128389102樓 01/22 09:48
ntpuisbest3樓終於懂什麼是pass by value了,感恩 01/22 09:59
testPtt4樓然後人家就愛問string是什麼type 01/22 10:44
klandakuei5樓 01/22 14:04
TAKADO6樓推這篇,真的寫一陣子之後才會認真意識到pass by value/re 01/23 00:27
TAKADO7樓f,搞懂就可以進化成獨當一面的c#程序猿了。這類問題要拿 01/23 00:27
TAKADO8樓來鑑別junior senior很有用。 01/23 00:27
acgotaku9樓pass by value/ref 不就寫cpp第一個入門知識 01/23 01:53
acgotaku10樓這怎麼可能鑑別出junior/senior 01/23 01:54
acgotaku11樓這都沒搞清楚怎麼寫code ? 01/23 01:56
本人12樓這篇是c#不是c++...而且c# 沒加&也會pass by ref 01/23 11:44
choral13樓pass by ref也可以考array list dictionary的實作, 還有 01/23 12:06
choral14樓shallow/deep clone等觀念 01/23 12:06
gekkou15樓pass by value/pass by refence 應該是junior 會考的問題 01/23 14:29
gekkou16樓如果連這個都不太懂的話,建議重修下程式語言比較好一點 01/23 14:30
dnabossking17樓我通常會從value type ref type開始考、傳值、傳參、 01/23 17:42
dnabossking18樓boxing unboxing,深拷貝、淺拷貝,stack heap,一路 01/23 17:42
dnabossking19樓考到設計面 01/23 17:42
TAKADO20樓對,以前我也想說怎麼的可能value/ref的考題會有用,結果 01/23 17:46
TAKADO21樓我們公司放了一題在考卷裡,這半年來兩年年資以下的基本上 01/23 17:46
TAKADO22樓全軍覆沒,寫.Net三年五年會錯的人也大有人在。 01/23 17:46
choral23樓那考concurrency, parallel processing不就倒更多? 01/23 19:06
lturtsamuel24樓太慘了吧 我們也有這題但是還沒看人連基礎的都講不出 01/23 21:57
adarkair25樓Pass by value/reference 應該跟變數是否為 value/refe 01/26 14:51
adarkair26樓rence type 無關吧? 01/26 14:51
nayeonmywife27樓Pointer消失後所造成的名詞混淆 01/28 18:41
zxcasdjason128樓是覺得有點誇張 JS也有類似考題 01/30 18:14
zxcasdjason129樓但我覺得這題應該 junior 就該會,senior 應該是要 01/30 18:17
zxcasdjason130樓解決非語法上的問題了,如改善系統效能,規範代碼 01/30 18:17