C_Sharp 板


LINE

第一次po文请见谅 我大概知道c# call by value / reference是怎麽回事 但使用上还是觉得怪怪的 在c++中,当我们把传入函式的参数设成传址或传参考, 意味着该值会在函式中被更改 另一方面,如果只是传值使用者不必担心传入的变数会被改掉 但c#中,class object本身就是reference type 不论是传参考或传值都有可能被修改 如果我是class 的使用者, 难道不该(需)知道该物件有没有被修改过吗? 感觉抖抖的 或者说,我该用什麽角度去理解c#对class object的操作呢? --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 203.77.32.131
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1505826669.A.363.html
1F:→ testPtt: 就要自己new物件去复制防止修改阿 09/19 22:00
2F:→ undyingworld: 原来要手动复制呀。也就是说传进去的class物件基本 09/19 23:42
3F:→ undyingworld: 上就变成未知数了 09/19 23:42
4F:推 lightyen: 不需要知道 09/20 00:18
5F:→ lightyen: 因为有public private 09/20 00:19
6F:→ ssccg: 跟C++比的话,就当C#里reference type的都是pointer就好 09/20 00:30
7F:→ ssccg: 想有像C++那种on stack object可以用value type(struct) 09/20 00:31
8F:→ undyingworld: 或许我更在意可读性的问题,一个函式接收class obj 09/20 12:13
9F:→ undyingworld: ect当参数,我怎麽知道这是output 还是input,因为 09/20 12:13
10F:→ undyingworld: 不需要out / ref 关键字就可以修改其值 09/20 12:13
11F:→ undyingworld: 使用struct 的方式无法解决某些情况,例如使用别人 09/20 12:19
12F:→ undyingworld: 写的code,无法自己决定用class或struct,但又必须 09/20 12:19
13F:→ undyingworld: 用到该class object 当参数 09/20 12:19
14F:→ ssccg: C#世界(或是说用这种传参数方法的语言都是)不太会去分input 09/20 13:13
15F:→ ssccg: output参数,你可能得习惯,实际行为看API说明就好 09/20 13:15
16F:→ Litfal: 不懂你的问题,class当参数就是要被使用,一个人传过去变 09/20 16:12
17F:→ Litfal: 另一个人不奇怪吗?真要只传资料请另外开DTO class 09/20 16:12
18F:→ Litfal: 知道物件有没有被修改过?什麽都想知道不就和OO的封装原则 09/20 16:21
19F:→ Litfal: 矛盾了? 09/20 16:21
20F:推 shadow0326: 我想原po的问题大概是C#没有const参数吧? 这只能靠设 09/20 18:42
21F:→ shadow0326: 计模式回避掉 09/20 18:42
22F:→ undyingworld: 感谢各位回应,也许是从c++的角度来看c#才觉得怪怪 09/20 18:51
23F:→ undyingworld: 的,对我来说已经很习惯透过c++的参数型态来判断是 09/20 18:51
24F:→ undyingworld: 否期待该参数会被函式改变,但c#在决定使用class或 09/20 18:51
25F:→ undyingworld: struct的时候就决定好之後只能当作ref或value 使用 09/20 18:51
26F:→ undyingworld: 即使在c++当中没有使用const ,我仍然可以预想传值 09/20 18:54
27F:→ undyingworld: 时原本的物件不会被改变。 09/20 18:54
28F:→ undyingworld: 而会被改变的参数我则认为他是函数的outputs 之一 09/20 18:56
29F:→ undyingworld: 如果传入的所有参数都可能被改变,那我只能透过注 09/20 18:58
30F:→ undyingworld: 解或说明档才能知道哪个是input 哪个是output 09/20 18:58
31F:→ undyingworld: 对我来说这样会降低程式码的可读性和可维护性 09/20 19:00
32F:→ ssccg: 在这边的世界里,反倒是觉得把参数当output是诡异的想法... 09/20 19:09
33F:→ ssccg: 一个物件自己能控制自己能被做哪些操作,不是由caller也不 09/20 19:11
34F:→ ssccg: 是由callee function来决定,是比较纯物件导向的看法吧 09/20 19:12
35F:→ ssccg: 真的常有不想被改的需求的class,通常是准备个immutable版 09/20 19:12
36F:→ ssccg: 的,setter不给用就好了 09/20 19:13







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP