我正在尝试在这里打印出数组/集合。我有一个包含以下代码的类文件来打印文本:
//Display All
public void Display()
{
Console.WriteLine(ID + "\t" + Product + "\t" + Category + "\t" + Price + "\t" + Stock + "\t" + InBasket);
}
然后,在主要内容我尝试使用以下方法将其实际打印到屏幕上:
foreach (KeyValuePair<int, Farm_Shop> temp in products)
{
//display each product to console by using Display method in Farm Shop class
temp.Display();
}
但是我收到以下错误:
'System.Collections.Generic.KeyValuePair<int,Farm_Shop_Assignment.Farm_Shop>'
does not contain a definition for 'Display' and no extension method 'Display'
accepting a first argument of type
'System.Collections.Generic.KeyValuePair<int,Farm_Shop_Assignment.Farm_Shop>'
could be found (are you missing a using directive or an assembly reference?)
以下是我要打印的实际内容:
products = new Dictionary<int, Farm_Shop>
{
{ 1, new Farm_Shop(1, "Apple", "Fruit\t", 0.49, 40, 'n') },
{ 2, new Farm_Shop(2, "Orange", "Fruit\t", 0.59, 35, 'n') }
};
根据我的理解,这不起作用,因为我只发送一个要打印的数组/集合,而不是如果你知道我的意思,那就是要在它之前出现的int。
有人可以告诉我如何让它正确打印。
非常感谢。感谢。
答案 0 :(得分:6)
Display()
是Farm_Shop
上的一种方法。您无法直接在KeyValuePair<int, Farm_Shop>
类型的对象上调用它。您应该执行此操作以访问key/value pair中的Farm_Shop
实例:
foreach (KeyValuePair<int, Farm_Shop> temp in products)
{
//display each product to console by using Display method in Farm Shop class
temp.Value.Display();
}
或循环遍历Values
属性,因为密钥不会为您增加太多(因为它来自Farm_Shop
上的属性:
foreach (Farm_Shop temp in products.Values)
{
//display each product to console by using Display method in Farm Shop class
temp.Display();
}
答案 1 :(得分:0)
这将遍历字典中的每个KeyValue对,并获取每个jey的值
foreach(产品中的KeyValuePairtemp)//遍历字典 { Console.WriteLine(temp.Value); }
答案 2 :(得分:0)
它应该是类似
的内容foreach (var product in products)
{
product.Value.Display();
}
现在,您可以通过以下方式使您的Display方法更容易理解:
public Display()
{
var out=String.Format("{1}\t{2}\t{3}\t{4}\t{5}",_id,_productName,_categoryName,_this,_that [...]);
Console.WriteLine(out);
}
答案 3 :(得分:0)
您可以覆盖对象的.ToString()方法并调用它,而不是创建Display方法。然后在循环中可以执行以下操作:
foreach(Farm_Shop item in products.Values)
{
Console.WriteLine(item.ToString());
}