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代码的闭花括号时,将自动撤销该对象 { } } }