学习c#的时候为什么用foreach循环遍历二维集合的时候报这个错误。。请教大佬指点

class WareHouse   //仓库类
    {
        //添加货物的货架,货架上放商品(为了分类)
        List<List<ProductFather>> PF = new List<List<ProductFather>>();
        //构造函数中进行货架的添加
        public WareHouse()
        {
            PF.Add(new List<ProductFather>());
            PF.Add(new List<ProductFather>());
            PF.Add(new List<ProductFather>());
            PF.Add(new List<ProductFather>());
        }
        /// <summary>
        /// 展示物品
        /// </summary>
        public void ShowPors()
        {
            foreach (var item in PF)
            {
                
                Console.WriteLine("我们超市有:{0}\t 库存{1}个\t 每个{2}元",item[0].Name,item[0].Count,item[0].Price);//这里报错
            }
        }
        /// <summary>
        /// 进货
        /// </summary>
        /// <param name="strType">进货的类型</param>
        /// <param name="count">一次性进货的数量</param>
        public void AddPros(string strType, int count)
        {
            for (int i = 0; i < count; i++)
            {
                switch (strType)
                {
                    case "Samsung":
                        PF[0].Add(new SamSung(1000, "三星手机", count, Guid.NewGuid().ToString()));
                        break;
                    case "Acer":
                        PF[1].Add(new Acer(2000, "鸿基笔记本", count, Guid.NewGuid().ToString()));
                        break;
                    case "Banana":
                        PF[2].Add(new Banana(5, "香蕉", count, Guid.NewGuid().ToString()));
                        break;
                    case "JiangYou":
                        PF[3].Add(new JiangYou(10, "酱油", count, Guid.NewGuid().ToString()));
                        break;
                    default:
                        break;
                }
            }
        }
//这里是超市类里面添加货物的地方
class SuperMarket
    {
        WareHouse WH = new WareHouse();
        ProductFather[] _pf;
        public SuperMarket()
        {
            WH.AddPros("Acer", 1000);
            WH.AddPros("Banana", 1000);
            WH.AddPros("JiangYou", 1000);
            WH.AddPros("Sansung", 1000);
        }//超市进货
    }

 

List<List<ProductFather>> PF = new List<List<ProductFather>>();

你这个是嵌套的list,一个集合里包了若干个集合,你遍历集合的时候只遍历了第一层,还需要遍历第二层

foreach (var item in PF)
  {
                
       foreach(var prodouct in item)
    {
       Console.WriteLine("我们超市有:{0}\t 库存{1}个\t 每个{2} 元",prodouct[0].Name,item.Count,prodouct[0].Price);
    } 
   }

 

这里不能直接这么用,用string.Format('xxxx{0}xxxx{1}', item[0], item[1]);

你的PF是一个List<List<ProductFather>> PF = new List<List<ProductFather>>();

你要用二重循环

foreach (var item in PF)

{
    foreach (var item2 in PF)

    {

        Console.WriteLine("我们超市有:{0}\t 库存{1}个\t 每个{2}元",item2.Name,item2 .Count,item2.Price);//这里报错
    }
}