using System; using System.Collections.Generic; public class Starter { public static void Main() { Console.WriteLine("Forward List"); MyClass obj = new MyClass(); foreach (int item in obj) { Console.Write(item); } Console.WriteLine(" Reverse List"); foreach (int item in obj.Reverse) { Console.Write(item); } } } public class MyClass { private int[] list1 = new int[] { 0, 2, 4, 6, 8 }; public IEnumerator<int> GetEnumerator() { for (int index = 0; index < 5; ++index) { yield return list1[index]; } } public IEnumerable<int> Reverse { get { for (int index = 4; index >= 0; --index) { yield return list1[index]; } } } }
ASP.NET & Csharp (C#)
ASP.NET & Csharp (C#) , Here you can find my posts about .NET c# .
Return IEnumerable by yield
using System; using System.Collections; public class Starter { public static void Main() { foreach (string day in ToEndOfMonth()) { Console.WriteLine(day); } } public static IEnumerable ToEndOfMonth() { DateTime date = DateTime.Now; int currMonth = date.Month; while (currMonth == date.Month) { string temp = currMonth.ToString() + "/" + date.Day.ToString(); date = date.AddDays(1); yield return temp; } } }
return IEnumerable
using System; using System.Collections.Generic; class IteratorDemo { static IEnumerable<int> OneTwoThree() { Console.WriteLine("Returning 1"); yield return 1; Console.WriteLine("Returning 2"); yield return 2; Console.WriteLine("Returning 3"); yield return 3; } static void Main() { foreach (var number in OneTwoThree()) { Console.WriteLine(number); } } }
yield return
using System; using System.Collections; using System.Collections.Generic; using System.Text; class Program { public static IEnumerable<string> SimpleList() { yield return "1"; yield return "2"; yield return "3"; } public static void Main(string[] args) { foreach (String item in SimpleList()) Console.WriteLine(item); } }
The Dispose Pattern
using System; public class MyClass { private string name; public MyClass(string name) { this.name = name; } override public string ToString() { return name; } ~MyClass() { Console.WriteLine("~MyClass()"); } public void Dispose() { Console.WriteLine("Dispose()"); } } public class GarbageDisposalApp { public static void Main(string[] args) { DoSomething(); Console.WriteLine("end of Main"); } public static void DoSomething() { MyClass t = new MyClass("Foo"); Console.WriteLine(t); t.Dispose(); t = null; GC.Collect(); GC.WaitForPendingFinalizers(); } }
using statement with IDisposable interface
using System; public class MyValueReport { int InstanceNumber; public MyValueReport(int InstanceNumber) { this.InstanceNumber = InstanceNumber; Console.WriteLine(InstanceNumber); } } public class MyValue : IDisposable { int n; public MyValue(int n) { this.n = n; MyValueReport MyReport = new MyValueReport(n); } public void Dispose() { MyValueReport MyReport = new MyValueReport(this.n); GC.SuppressFinalize(this); } ~MyValue() { MyValueReport MyReport = new MyValueReport(this.n); } } public class Test { static void Main() { MyValue d1 = new MyValue(1); MyValue d2 = new MyValue(2); MyValue d3 = new MyValue(3); d1 = null; using (d3) { MyValue d4 = new MyValue(4); } d2.Dispose(); } }
The constructor initializes the internal object. The Dispose method closes the file resource. The destructor delegates to the Dispose method.
using System; using System.IO; public class WriteToFile : IDisposable { public WriteToFile(string _file, string _text) { file = new StreamWriter(_file, true); text = _text; } public void WriteText() { file.WriteLine(text); } public void Dispose() { file.Close(); } ~WriteToFile() { Dispose(); } private StreamWriter file; private string text; } public class Writer { public static void Main() { WriteToFile sample = new WriteToFile("sample.txt", "My text file"); sample.WriteText(); sample.Dispose(); } }