c#学习心得(2)

1.foreach与IEnumerable和IEnumerator的结合使用?????

using System;
using System.Collections;
class Program
{
    static void Main(string[] args)
    {
        TestIEnumerable test = new TestIEnumerable();
        foreach (string str in test)
        {
            Console.WriteLine(str);
        }
        Console.ReadKey();
    }
}

class TestIEnumerable : IEnumerable
{
    private string[] _item;

    public TestIEnumerable()
    {
        _item = new string[]
             {
                 "1","2","3","4"
             };
    }

    public string this[int index]
    {
        get { return _item[index]; }
    }

    public IEnumerator GetEnumerator()
    {
        return new EnumeratorActualize(this);
    }

    class EnumeratorActualize : IEnumerator
    {
        private int index;
        private TestIEnumerable _testEnumerable;
        private object currentObj;
        public EnumeratorActualize(TestIEnumerable testEnumerable)
        {
            _testEnumerable = testEnumerable;
            currentObj = new object();
            index = -1;
        }


        public object Current
        {
            get
            {
                return currentObj;
            }
        }

        public bool MoveNext()
        {
            if (index < _testEnumerable._item.Length - 1)
            {
                index++;
                currentObj = _testEnumerable._item[index];
                return true;
            }
            index = _testEnumerable._item.Length;
            return false;
        }

        public void Reset()
        {
            index = -1;
        }
    }
}

2.IDisposable清除对象(接口)

using System;
using System.Collections;
public class MyClass: IDisposable 
{
    public MyClass()
    {
        Console.WriteLine("constructor");
    }
    ~MyClass()
    {
        Console.WriteLine("destructor");
    
    }
    public void Dispose()
    {
        Console.WriteLine("implementation of IDisposable.Dispose()");
    
    }
}
public class MainClass
{
    static void Main()
    {

        using (MyClass MyObject = new MyClass())
        //using 关键字用于创建一个对象MyObject 该对象属于MyClass类
        //当代吗分支到达using代码的闭花括号时,将自动撤销该对象
        { 
        }
    }
}

  

猜你喜欢

转载自www.cnblogs.com/ttplearning/p/12372861.html