作者wulouise (在線上!=在電腦前)
看板Soft_Job
標題Re: [心得] C#基礎名詞解釋
時間Fri Jan 21 22:52:37 2022
※ 引述《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?
--
等等,我是不知道妳是看了什麼神槍手的故事,可是為什麼要拿我當靶 (′Д‵)
什麼!是黃忠和后羿的故事?他們拿的不是銃,是弓!
長門,妳手上拿著蘋果跟繩子是作什麼?今天晚餐不是關東煮是烤乳豬嗎?
連爸爸都沒弄痛過我,可不可以不要綁這麼緊,好歹鬆一點讓我有空間逃吧,古泉。
好,我認了,要射就射吧,可是請聽一下在我死前的最後一個願望。
不 要 拿 霰 彈 來.....噗滋(腦漿聲) 摘自「阿虛的最後一餐」
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.231.136.89 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1642776760.A.F75.html
※ 編輯: wulouise (61.231.136.89 臺灣), 01/21/2022 23:12:28
1F:推 godsparticle: 推這篇 01/22 05:55
2F:推 a12838910: 推 01/22 09:48
3F:推 ntpuisbest: 終於懂什麼是pass by value了,感恩 01/22 09:59
4F:推 testPtt: 然後人家就愛問string是什麼type 01/22 10:44
5F:推 klandakuei: 推 01/22 14:04
6F:推 TAKADO: 推這篇,真的寫一陣子之後才會認真意識到pass by value/re 01/23 00:27
7F:→ TAKADO: f,搞懂就可以進化成獨當一面的c#程序猿了。這類問題要拿 01/23 00:27
8F:→ TAKADO: 來鑑別junior senior很有用。 01/23 00:27
9F:推 acgotaku: pass by value/ref 不就寫cpp第一個入門知識 01/23 01:53
10F:→ acgotaku: 這怎麼可能鑑別出junior/senior 01/23 01:54
11F:→ acgotaku: 這都沒搞清楚怎麼寫code ? 01/23 01:56
12F:→ wulouise: 這篇是c#不是c++...而且c# 沒加&也會pass by ref 01/23 11:44
13F:推 choral: pass by ref也可以考array list dictionary的實作, 還有 01/23 12:06
14F:→ choral: shallow/deep clone等觀念 01/23 12:06
15F:推 gekkou: pass by value/pass by refence 應該是junior 會考的問題 01/23 14:29
16F:→ gekkou: 如果連這個都不太懂的話,建議重修下程式語言比較好一點 01/23 14:30
17F:→ dnabossking: 我通常會從value type ref type開始考、傳值、傳參、 01/23 17:42
18F:→ dnabossking: boxing unboxing,深拷貝、淺拷貝,stack heap,一路 01/23 17:42
19F:→ dnabossking: 考到設計面 01/23 17:42
20F:推 TAKADO: 對,以前我也想說怎麼的可能value/ref的考題會有用,結果 01/23 17:46
21F:→ TAKADO: 我們公司放了一題在考卷裡,這半年來兩年年資以下的基本上 01/23 17:46
22F:→ TAKADO: 全軍覆沒,寫.Net三年五年會錯的人也大有人在。 01/23 17:46
23F:推 choral: 那考concurrency, parallel processing不就倒更多? 01/23 19:06
24F:推 lturtsamuel: 太慘了吧 我們也有這題但是還沒看人連基礎的都講不出 01/23 21:57
25F:噓 adarkair: Pass by value/reference 應該跟變數是否為 value/refe 01/26 14:51
26F:→ adarkair: rence type 無關吧? 01/26 14:51
27F:推 nayeonmywife: Pointer消失後所造成的名詞混淆 01/28 18:41
28F:推 zxcasdjason1: 是覺得有點誇張 JS也有類似考題 01/30 18:14
29F:→ zxcasdjason1: 但我覺得這題應該 junior 就該會,senior 應該是要 01/30 18:17
30F:→ zxcasdjason1: 解決非語法上的問題了,如改善系統效能,規範代碼 01/30 18:17
31F:→ zxcasdjason1: 風格等等 01/30 18:17
32F:推 nfsong: 推 02/08 16:32
33F:推 cathychg: 這JAVA 玩的更徹底。oo啊…囧囧囧 02/09 12:14
34F:→ kaltu: pointer pass by value 比較好玩 03/04 14:02