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/m.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燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP