class SuperMarket {
WareHouse CangKu = new WareHouse();
// CangKu.GoodsIn("DreamCar", 100); // 編譯錯誤:類定義中不能直接執行語句
public SuperMarket() {
CangKu.GoodsIn("DreamCar", 100); // 正確:在構造函數中執行
// ...
}
}
C# 類體內只能包含 **聲明**(字段、屬性、方法、構造函數等),**不能直接編寫可執行語句**(方法調用、賦值表達式、循環等)。
public SuperMarket() {
CangKu.GoodsIn("DreamCar", 100);
CangKu.GoodsIn("Apple", 800);
// ...
}
public class SuperMarket {
public WareHouse CangKu { get; }
public SuperMarket() {
CangKu = new WareHouse();
CangKu.GoodsIn("DreamCar", 100);
// ...
}
}
WareHouse 構造函數內直接初始化:public class WareHouse {
public List> Storeroom { get; }
public WareHouse() {
Storeroom = new List>(4);
for (int i = 0; i < 4; i++) Storeroom.Add(new List());
GoodsIn("DreamCar", 100); // 內部調用
// ...
}
public void GoodsIn(string type, int count) { /* ... */ }
}
Dictionary> 替代 List>
,按商品名稱索引更直觀。Commodity 設計為基類,DreamCar、Apple 等繼承並重寫屬性,體現多態。