|
Listing 14-30 extracted from chapter Unsafe code, exceptions, anonymous methods, iterators
Listing 14-29< > Listing 14-31
This listing can be compiled with the command line: csc.exe /target:exe Example_14_30.cs Errors: 0 Warnings: 0
Example_14_30.cs
delegate void DelegateTypeCounter();
class CounterBuilder {
string m_Name; // An instance field.
internal CounterBuilder( string name ) { m_Name = name; }
internal DelegateTypeCounter BuildCounter( string counterName ) {
int counter = 0;
DelegateTypeCounter delegateInstanceCounter = delegate {
System.Console.Write( counterName +(++counter).ToString() );
// We could have written this.m_Name.
System.Console.WriteLine(" Counter built by: " + m_Name);
};
return delegateInstanceCounter;
}
}
class Program {
static void Main() {
CounterBuilder cBuilder1 = new CounterBuilder( "Factory1" );
CounterBuilder cBuilder2 = new CounterBuilder( "Factory2" );
DelegateTypeCounter cA = cBuilder1.BuildCounter( "Counter A:" );
DelegateTypeCounter cB = cBuilder1.BuildCounter( "Counter B:" );
DelegateTypeCounter cC = cBuilder2.BuildCounter( "Counter C:" );
cA(); cA ();
cB(); cB();
cC(); cC();
}
}
Copyright Patrick Smacchia 2006 2007
|