我正在尝试在这里打印出一个数组/集合。我有一个带有以下代码的类文件来打印文本:
//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", "Fruitt", 0.49, 40, 'n') },
{ 2, new Farm_Shop(2, "Orange", "Fruitt", 0.59, 35, 'n') }
};
根据我的理解,这是行不通的,因为我只发送一个要打印的数组/集合,而不是它前面的 int,如果你明白我的意思。
有人可以告诉我如何正确打印它。
非常感谢。谢谢。
Display()
是Farm_Shop
上的一种方法。不能直接在类型为 KeyValuePair<int, Farm_Shop>
的对象上调用它。您应该执行此操作以访问键/值对中的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();
}
这将遍历字典中的每个键值对,并获取每个 jey 的值
foreach (产品中的 KeyValuePairtemp)//遍历字典 { Console.WriteLine(temp.值); }
它应该读成这样
foreach (var product in products)
{
product.Value.Display();
}
现在,您可以通过以下方式使显示方法更易于理解:
public Display()
{
var out=String.Format("{1}t{2}t{3}t{4}t{5}",_id,_productName,_categoryName,_this,_that [...]);
Console.WriteLine(out);
}
您可以覆盖 .对象的 ToString() 方法并调用它,而不是创建一个 Display 方法。 然后在循环中,您可以执行以下操作:
foreach(Farm_Shop item in products.Values)
{
Console.WriteLine(item.ToString());
}