我知道C#中没有指针,但是我想弄清楚如何执行以下操作,我会用C ++中的指针(或更好的,迭代器)来完成(我正在学习C#课程,但我已经知道C ++了。
我们有一个编写简单“商店”程序(库存,交易等)的任务。我的第一个想法(来自C ++)是这样的:有一个项目的链表和它们的库存量。然后,有一个代表销售的类,其具有当前销售中的项目列表,其中每个项目被表示为主库存列表中的特定项目的迭代器和该金额的值。 (我希望这很清楚。)
我试图在C#中做同样的事情,但无法弄清楚如何将这些迭代器放到主列表中(它们最好也适用于主列表的更新)。 你是怎么做到的?
答案 0 :(得分:2)
使用引用不需要做任何特殊操作,默认情况下它们在C#中使用。
我假设你在C ++中做了类似的事情:
class Sale {
public:
void AddItem(Item* i) {
items.push_back(i);
}
private:
std::vector<Item*> items;
};
在C#中,由于它默认使用引用而不是传递值,因此默认情况下会获得该行为。您将从以下代码中获得C#中的类似行为:
class Sale {
private List<Item> items;
public void AddItem(Item i) {
items.Add(i);
}
}
要调用此C#代码,您可以执行类似
的操作Item item = new Item("A test item");
Sale sale = new Sale();
sale.AddItem(item);
答案 1 :(得分:0)
你几乎肯定要编写自己的迭代器风格的界面--C#似乎没有提供任何接近如此灵活的东西。您可以编写自己的扩展方法和提供此类的扩展方法,但您必须自己完成,我很确定它在.NET标准库中不存在。