【问题标题】:How can i use generic list with foreach?如何将通用列表与 foreach 一起使用?
【发布时间】:2010-06-18 05:58:41
【问题描述】:

如果我编译下面的代码错误返回foreach循环我该如何解决?

错误:错误 1 ​​foreach 语句无法对“Sortlist.MyCalısan”类型的变量进行操作,因为“Sortlist.MyCalısan”不包含“GetEnumerator”的公共定义 C:\Users\yusuf.karatoprak\Desktop\ ExcelToSql\TestExceltoSql\Sortlist\Program.cs 46 13 排序列表


        static void EskiMetodlaListele()
        {
            MyCalısan myCalısan = new MyCalısan();
            Calısan calisan = new Calısan();
            calisan.Ad = "ali";
            calisan.SoyAd = "abdullah";
            calisan.ID = 1;

            myCalısan.list.Add(calisan);

            foreach (Calısan item in myCalısan)
            {
                Console.WriteLine(item.Ad.ToString());
            }
        }


    }

   public class Calısan
    {
        public int ID { get; set; }
        public string Ad { get; set; }
        public string SoyAd { get; set; }

    }

   public class MyCalısan
    {
        public List<Calısan> list { get; set; }
        public MyCalısan()
        {
            list = new List();
        }
    }

【问题讨论】:

    标签: c# .net visual-studio visual-studio-2008


    【解决方案1】:

    只写foreach (Calısan item in myCalısan.list)

    【讨论】:

      【解决方案2】:

      我推荐MyCalısan 定义为Collection。

      public class MyCalısan : Collection<Calısan>
      {
      }
      

      【讨论】:

        【解决方案3】:

        你应该在 MyCalisan.list 上循环; MyCalisan 只是您的类,本身不可枚举。

        【讨论】:

          【解决方案4】:

          在编译之前需要修复一些问题:

             public class MyCalısan{
          public List<Calısan> list { get; set; }
          public MyCalısan()
          {
              list = new List<Calısan>();
          }}
          
            foreach (Calısan item in myCalısan.list)
                  {
                      Console.WriteLine(item.Ad.ToString());
                  }
          

          【讨论】:

            【解决方案5】:

            您需要遍历您定义的 集合 - list 属性:

            myCalısan.list.Add(calısan);
            
            foreach (Calısan item in myCalısan.list)
            {
                Console.WriteLine(item.Ad.ToString());
            }
            

            但是,如果您想直接迭代 myCalısan,请让 MyCalısan 类实现 IEnumerable&lt;Calısan&gt;

            【讨论】:

            • List 在构造函数 MyCalısan() 中初始化
            • @Belousov Pavel - 是的,在发布我的答案后注意到了这一点。感谢您的评论!
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-04-02
            • 2011-06-03
            • 2013-09-11
            • 2014-05-21
            • 2011-07-12
            相关资源
            最近更新 更多