C#実現foreach

3666 ワード

方法:一、既存のインタフェースを継承する:CollectionBase、DictionaryBase
class TestForeach: CollectionBase

    {

        public void Add(string val)

        {

            List.Add(val);

        }



        public void remove(string val)

        {

            List.Remove(val);

        }

    }

}

// TestForeach :

public void test()

{

            TestForeach cols = new TestForeach();

            cols.Add("Name");

            cols.Add("Sex");



            foreach (string col in cols)

            {

                MessageBox.Show("hello!" + col);

            }

}

二、yield return
        public IEnumerable Power(int number, int exponent) 

        { 

            int counter = 0;

            int result = 1; 

            while (counter++ < exponent) 

            { 

                result = result * number;

                yield return result;

            } 

        }



         private void testYield()

         {   

             // Display powers of 2 up to the exponent 8:        

             foreach (int i in Power(2, 8))

             {            

                 //Console.Write("{0} ", i);

                 MessageBox.Show("hello!" + i);

             }    

         }