|
Exemple 10-1 extrait du chapitre Le système de types
Exemple 9-25< > Exemple 10-2
Cet exemple peut être compilé avec la ligne de commande: csc.exe /target:exe Exemple_10_1.cs Erreurs: 0 Avertissements: 0 Remarque:
Exemple_10_1.cs
// TypeVal est un type valeur, car c'est une structure.
struct TypeVal {
public int m_i;
public TypeVal( int i ) { m_i = i; }
}
// TypeRef est un type référence, car c'est une classe.
class TypeRef {
public int m_i;
public TypeRef( int i ) { m_i = i; }
}
class Program {
static void Main() {
TypeVal v1 = new TypeVal(6);
TypeVal v2 = v1; // Une nouvelle instance du type TypeVal est
// créée et le champ v2.i est aussi égal à 6.
// Néanmoins v1 et v2 sont deux instances différentes
// de type TypeVal.
v2.m_i = 9;
// Ici v1.i vaut 6, il y a bien deux instances du type TypeVal.
System.Diagnostics.Debug.Assert( v1.m_i == 6 && v2.m_i == 9 );
TypeRef r1 = new TypeRef(6);
TypeRef r2 = r1; // Il n'y a pas de nouvelle instance de la
// classe TypeRef. r2 et r1 sont deux références de la
// même instance de la classe TypeRef.
r2.m_i = 9;
// Ici r1.i vaut 9, il n'y a qu'une seule instance de la
// classe TypeRef.
System.Diagnostics.Debug.Assert( r1.m_i == 9 && r2.m_i == 9 );
}
}
Copyright Patrick Smacchia 2006 2007
|