1
我正在通過書Pro C# and the .NET Platform
中的示例工作,我在某處看不到我看不到的一個錯誤。該程序編譯並運行,但此示例中的Manager
對象沒有返回正確的'StockOptions'值。爲了簡潔起見,我將嘗試僅發佈相關代碼,因爲這個例子全部是關於類層次結構的,並且有六個不同的類。 Manager
類中的Employee
類中的虛擬方法GiveBonus
未被正確覆蓋。從我的Main()方法虛擬方法邏輯不工作C#.NET 4.0
Manager chucky = new Manager("chucky", 50, 92, 100000, "333-33-3333", 9000);
chucky.GiveBonus(300);
chucky.DisplayStats();
Console.WriteLine();
class Manager : Employee
{
private int numberOfOpts;
//the properties are inherited from Employee
public int StockOptions { get; set; }
//***METHODS*** this is returns the StockOptions amount as it is in the
// constructor, there's no logic being applied
public override void GiveBonus(float amount)
{
base.GiveBonus(amount);
Random r = new Random();
numberOfOpts += r.Next(500);
}
public override void DisplayStats()
{
base.DisplayStats();
Console.WriteLine("you have {0} stock options", StockOptions);
}
public Manager() { }
public Manager(string fullName, int age, int empID, float currPay,
string ssn, int numbofOpts) : base(fullName, age, empID, currPay, ssn)
{
ID = empID;
Age = age;
Name = fullName;
Pay = currPay;
StockOptions = numbofOpts;
}
}
片斷我犯了一個錯誤,而問的問題。我應該怎麼問就是爲什麼我要使用
Console.WriteLine("you have {0} stock options", numbOfOpts);
代替
Console.WriteLine("you have {0} stock options", StockOptions);
這實際上是在書:)。當我將'StockOptions'更改爲類中的字段時,'numberOfOpts'會返回一個隨機數。那麼在這樣的實現中,私人支持字段將不會被更新?你能不能解釋一下爲什麼你不喜歡這個代碼?我正在學習所有這些東西,這是從馬的嘴裏直接得來的。 – wootscootinboogie
@wootscootinboogie:通過設置不同的字段,不會自動更改支持'StockOptions'的字段。噢親愛的。至於其他問題 - 名稱是可怕的,無參數構造函數似乎是一個壞主意,沒有驗證,我期望各種屬性由基礎構造函數設置(大多數情況下是不可變的)。如果上面的'GiveBonus'的評論也是逐字的,那沒有任何意義。 Ick,基本上。 –
我編輯了這個問題以反映我應該問的問題。代碼是逐字的,但評論是我對神知道的可憐嘗試。 – wootscootinboogie