PTT評價

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

看板Soft_Job標題Re: [心得] C#基礎名詞解釋作者
wulouise
(在線上!=在電腦前)
時間推噓15 推:16 噓:1 →:17

※ 引述《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 留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.231.136.89 (臺灣)
PTT 網址
※ 編輯: wulouise (61.231.136.89 臺灣), 01/21/2022 23:12:28

godsparticle01/22 05:55推這篇

a1283891001/22 09:48

ntpuisbest01/22 09:59終於懂什麼是pass by value了,感恩

testPtt01/22 10:44然後人家就愛問string是什麼type

klandakuei01/22 14:04

TAKADO01/23 00:27推這篇,真的寫一陣子之後才會認真意識到pass by value/re

TAKADO01/23 00:27f,搞懂就可以進化成獨當一面的c#程序猿了。這類問題要拿

TAKADO01/23 00:27來鑑別junior senior很有用。

acgotaku01/23 01:53pass by value/ref 不就寫cpp第一個入門知識

acgotaku01/23 01:54這怎麼可能鑑別出junior/senior

acgotaku01/23 01:56這都沒搞清楚怎麼寫code ?

wulouise01/23 11:44這篇是c#不是c++...而且c# 沒加&也會pass by ref

choral01/23 12:06pass by ref也可以考array list dictionary的實作, 還有

choral01/23 12:06shallow/deep clone等觀念

gekkou01/23 14:29pass by value/pass by refence 應該是junior 會考的問題

gekkou01/23 14:30如果連這個都不太懂的話,建議重修下程式語言比較好一點

dnabossking01/23 17:42我通常會從value type ref type開始考、傳值、傳參、

dnabossking01/23 17:42boxing unboxing,深拷貝、淺拷貝,stack heap,一路

dnabossking01/23 17:42考到設計面

TAKADO01/23 17:46對,以前我也想說怎麼的可能value/ref的考題會有用,結果

TAKADO01/23 17:46我們公司放了一題在考卷裡,這半年來兩年年資以下的基本上

TAKADO01/23 17:46全軍覆沒,寫.Net三年五年會錯的人也大有人在。

choral01/23 19:06那考concurrency, parallel processing不就倒更多?

lturtsamuel01/23 21:57太慘了吧 我們也有這題但是還沒看人連基礎的都講不出

adarkair01/26 14:51Pass by value/reference 應該跟變數是否為 value/refe

adarkair01/26 14:51rence type 無關吧?

nayeonmywife01/28 18:41Pointer消失後所造成的名詞混淆

zxcasdjason101/30 18:14是覺得有點誇張 JS也有類似考題

zxcasdjason101/30 18:17但我覺得這題應該 junior 就該會,senior 應該是要

zxcasdjason101/30 18:17解決非語法上的問題了,如改善系統效能,規範代碼

zxcasdjason101/30 18:17風格等等

nfsong02/08 16:32

cathychg02/09 12:14這JAVA 玩的更徹底。oo啊…囧囧囧

kaltu03/04 14:02pointer pass by value 比較好玩