|
Listing 13-12 extracted from chapter
Generics
Listing 13-11< > Listing 13-13
This listing can be compiled with the command line: csc.exe /target:exe Example_13_12.cs Errors: 0 Warnings: 0
Example_13_12.cs
interface ICounter{
void Increment();
int Val{get;}
}
struct Counter : ICounter {
private int i;
public void Increment() { i++; }
public int Val { get { return i; } }
}
class C<T> where T : ICounter, new() {
public void Fct(){
T t = new T();
System.Console.WriteLine( t.Val.ToString() );
t.Increment(); // Modify the state of 't'.
System.Console.WriteLine( t.Val.ToString() );
// Modify the state of a boxed copy of 't'.
(t as ICounter).Increment();
System.Console.WriteLine( t.Val.ToString() );
}
}
class Program {
static void Main() {
C<Counter> c = new C<Counter>();
c.Fct();
}
}
Copyright Patrick Smacchia 2006 2007
|