C_Sharp 板


LINE

我需要先有十个Sale物件 fields需要inventoryNum库存数量、saleAmount销售额、taxOwed所欠的税 皆由使用者输入 当销售额使用set存取器设定好後,taxOwed也被计算出来 (销售额低於100税率是0.08,大於一百超出额是0.06) 所以我写了如下的程式码 Main method 里面 { Sale[] sales = new Sale[10]; for (int i = 0; i < sales.Length; i++) { sales[i] = new Sale(); sales[i].InventoryNum = ReadLine(); sales[i].SaleAmount = ReadLine(); } } 然後class中长这样 { private int inventoryNum; //库存数量 private double saleAmount; //销售额 private double taxOwed; public double SaleAmount { get { return saleAmount; } set { saleAmount = value; if (saleAmount <= 100) { taxOwed = 0.08 * saleAmount; } else { taxOwed = 0.08 * 100 + 0.06 * (saleAmount - 100); } } } } 其他部分没有详细写出来,这样是可以跑的 1. 想问一般情况大家会在set里面写两行以上的程式码吗?(我知道官方建议是一行 2. 会有什麽缺点吗? 然後延伸部分是,当我今天要使用c#内建的排序方法去将销售额排出顺序时 会出现问题,因为Array.Sort(这边必须放阵列) 但是我的sales[0].taxOwed和sales[1].taxOwed和其他的taxOwed并不是一整个阵列 所以我将原本建立Sales物件阵列(如上面叙述的程式),改成 Sale sales = new Sale(10); (并且让fiels都是阵列) class中的程式码长这样 { private int[] inventoryNum; //库存数量 private double[] saleAmount; //销售额 private double[] taxOwed; public Sale(int size) { inventoryNum = new int[size]; saleAmount = new double[size]; taxOwed = new double[size]; } public int[] InventoryNum { get { return inventoryNum; } set { inventoryNum = value; } } public double[] SaleAmount { get { return saleAmount; } set { saleAmount = value; for (int i = 0; i < 10; i++) { if (saleAmount[i] <= 100) { taxOwed[i] = 0.08 * saleAmount[i]; } else { taxOwed[i] = 0.08 * 100 + 0.06 * (saleAmount[i] - 100) ; } } } } } 但是这样的程式码存入销售额的时候,并不会去计算taxOwed 推测是set中不会进入for回圈 想请问 3.是不是只能另外写一个calc method去计算,然後在main method里面呼叫? 4.关於这两种阵列的写法 Sale[] sales = new Sale[10]; //第一种:物件是阵列 Sale sales = new Sale(10); //第二种:实际上是fields是阵列 有没有什麽差别?或是使用时机?优缺点等等 如果对内容有建议,麻烦鞭小力一点 谢谢各位大大 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 49.197.94.181
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1555581380.A.05B.html
1F:推 s4300026: 1.官方没有建议只能一行吧? set的用意是有些变数在存04/18 19:16
2F:→ s4300026: 档前要预先处理,如果直接呼叫变数,则会有漏处理的情况04/18 19:16
已经回覆在下一篇
3F:推 jass970991: 你这样写啊不哪天class传到其他地方 又决定修改这个cl04/18 21:35
4F:→ jass970991: ass 就越变越大坨 为什麽不好好的处理完再传进去04/18 21:35
因为原本他这样写 The tax should be calculated whenever the amount of the sale is set. 可能是我理解有误,因为我原本以为要在设定好销售额的同时就设定好taxowed,不能自 己 另外呼叫method这样,所以才想说可不可以直接放在set里 ※ 编辑: Moneyyyyy (49.197.94.181), 04/18/2019 22:01:01
5F:推 jass970991: 那我会把他们两个用tuple 或另设一个class来readonly04/18 22:07
6F:→ jass970991: , 当你要设定一个值的时候会强迫另外一个也要赋值04/18 22:07
7F:→ jass970991: 同时做好一个calculator, 只要输入 amount 自动产生04/18 22:07
8F:→ jass970991: 一组可以直接用的tax amount pair04/18 22:07
9F:→ jass970991: 把ds和逻辑分开真的非常重要04/18 22:08
10F:→ Moneyyyyy: 喔喔,学到一课,谢谢,我来查查tuple是什麽~04/18 22:37
11F:推 wezmag: 有个严重的缺点,钱请用decimal,用double会出问题04/19 19:28
已修正,谢谢
12F:→ forewero: 我自己写除了预设值以外不会在model 做事,不是不行,但04/20 10:51
13F:→ forewero: 不直观;权责没分清後续接手很痛苦04/20 10:51
14F:推 Litfal: 当你的属性值只和class内的资料相关时,就可以写在model里 04/20 11:43
15F:→ Litfal: 而你的税务计算听起来就很专业XD, 又有8%,100,6%这种与类04/20 11:47
16F:→ Litfal: 无关的魔术数字,建议另外拉一个Service或Helper class算04/20 11:47
请问,所谓的 model 是指getter, setter吗?
17F:推 vi000246: 如果只是amount = salse x price之类简单的逻辑04/21 23:40
18F:→ vi000246: 可以写在set或get里 复杂一点的算式就不建议了04/21 23:40
谢谢各位大大的建议 ※ 编辑: Moneyyyyy (49.197.94.181), 04/22/2019 21:16: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灯, 水草

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

TOP