我需要先有十个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是阵列
有没有什么差别?或是使用时机?优缺点等等
如果对内容有建议,麻烦鞭小力一点
谢谢各位大大