|
Listing 10-4 extracted from chapter The .NET 2 type system from a C#2 point of view
Listing 10-3< > Listing 10-5
This listing can be compiled with the command line: csc.exe /target:exe Example_10_4.cs Errors: 0 Warnings: 0
Example_10_4.cs
using System.Diagnostics;
class TypeRef { public int state; }
struct TypeVal { public int state; }
public class Program {
public static void Main() {
// Identity comparison.
TypeRef ref1 = new TypeRef(); ref1.state = 3;
TypeRef ref2 = new TypeRef(); ref2.state = 3;
Debug.Assert( ref1 != ref2 );
Debug.Assert( ! ref1.Equals( ref2 ) );
Debug.Assert( ! object.ReferenceEquals( ref1, ref2 ));
ref2 = ref1;
Debug.Assert( ref1 == ref2 );
Debug.Assert( ref1.Equals(ref2) );
Debug.Assert( object.ReferenceEquals(ref1, ref2) );
// Equivalence comparison.
TypeVal val1 = new TypeVal(); val1.state = 3;
TypeVal val2 = new TypeVal(); val2.state = 3;
Debug.Assert( val1.Equals(val2) );
val1.state = 4;
Debug.Assert( !val1.Equals(val2) );
}
}
Copyright Patrick Smacchia 2006 2007
|