作者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/cn.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