Csharp Simple Disposable And Using Test
To convince myself of the function of the using function of IDisposable I wrote an incredibly simple test of it.
First a simple class that implements IDisposable. As you can see it only has a constructor that sets the name of the instance and the dispose method.
using System; namespace using_test { class myDisposable : IDisposable { string m_name; public myDisposable(string name) { m_name = name; } public void Dispose() { Console.WriteLine("{0} is being disposed", m_name); } }
And below in the same source file I wrote the program class with a main and two test methods. The first one returns while the idisposable is still in scope. And the second one after leaving the using curly brace.
class Program { public static void dTest1() { Console.WriteLine("dTest1 >> started."); using(myDisposable foo = new myDisposable("Adam")) { Console.WriteLine("dTest1 >> return."); return; } Console.WriteLine("dTest1 >> you can not read this."); } public static void dTest2() { Console.WriteLine("dTest2 >> started."); using(myDisposable foo = new myDisposable("Bertil")) { Console.WriteLine("dTest2 >> in using statement."); } Console.WriteLine("dTest2 >> done using."); return; Console.WriteLine("dTest2 >> you can not read this."); } public static void Main(string[] args) { Console.WriteLine("Main >> Starting dTest1!"); dTest1(); Console.WriteLine("Main >> Starting dTest2!"); dTest2(); Console.WriteLine("Main >> Done testing!"); Console.WriteLine(); Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } } }
As we could expect the disposable is disposed of in both cases.
Main >> Starting dTest1! dTest1 >> started. dTest1 >> return. Adam is being disposed Main >> Starting dTest2! dTest2 >> started. dTest2 >> in using statement. Bertil is being disposed dTest2 >> done using. Main >> Done testing! Press any key to continue . . .
For reference I also added a test method that does not dispose the myDisposable:
public static void dTest3() { Console.WriteLine("dTest3 >> started."); myDisposable foo = new myDisposable("Caesar"); Console.WriteLine("dTest3 >> done testing."); return; }
As we could expect this test does not dispose of the instance.
Download the source code here: [1]
This page belongs in Kategori Programmering