Code | Résultat | Remarques |
using System; namespace Exemples { class Test { public int val_int; public bool val_bool; // constructeus qui initialisent une instance de Test public Test() // val_int sera automatiquement assignée à 0 et val_bool à False { } public Test(int a, bool b) // assignation explicite de la valeur a à val_int et b à val_bool { val_int = a; val_bool = b; } } class DefinirAssignations { static void Main(string[] args) { Test[] tests = new Test[2]; // déclare un tableau if (tests[0] == null) // OK, les éléments sont assignés à null { Console.WriteLine("tests[0] == null"); } tests[0] = new Test(33, true); Console.WriteLine(tests[0].val_int); // affiche 33 Console.WriteLine(tests[0].val_bool); // affiche True tests[1] = new Test(); Console.WriteLine(tests[1].val_int); // affiche 0 par défaut Console.WriteLine(tests[1].val_bool); // affiche False par défaut Console.ReadKey(); } } } |
tests[0] == null 33 True 0 False |
On voit ici que :
|
Type | Valeur par défaut |
Numérique | 0 |
Booléen | False |
Char | '\0' |
Enum | 0 |
Référence | Null |
Code | Résultat | Remarques |
using System; namespace Exemples { class PasserArgumentsParValeur { static void Test(int p) { ++p; } static void Main(string[] args) { int x = 33; Test(x); // fait une copie de x Console.WriteLine(x); // x est toujours à 33 Console.ReadKey(); } } } |
33 |
Assigner à p une nouvelle valeur ne changera pas le contenu de x, puisque p et x résident chacun dans un espace mémoire différent. |
Code | Résultat | Remarques |
using System; namespace Exemples { class ModificateurRef { static void Test(ref int p) { ++p; } static void Main(string[] args) { int x = 33; Test(ref x); // envoi la référence de x à Test Console.WriteLine(x); // x est maintenant à 34 Console.ReadKey(); } } } |
34 |
En assignant à p une nouvelle valeur, le contenu de x changera. C'est généralement la raison pour laquelle nous voulons utiliser la passage par référence, bien que parfois ce soit plus efficace pour le passage de larges structures. |
Code | Résultat | Remarques |
using System; namespace Exemples { class ModificateurOut { static void Split(string prenom_nom, out string prenom, out string nom) { int pos_espace = prenom_nom.IndexOf(' '); prenom = prenom_nom.Substring(0, pos_espace); nom = prenom_nom.Substring(pos_espace + 1); } static void Main(string[] args) { string prenom, nom ; Split("Eric CHAMPION", out prenom, out nom); // Récupération du prenom et du nom Console.WriteLine("Prénom : {0}, Nom : {1}", prenom, nom); // affiche Prénom : Eric, Nom : CHAMPION Console.ReadKey(); } } } |
prénom : Eric, Nom : CHAMPION |
Le nom et le prénom doivent être assignés dans la méthode Split... |
Code | Résultat | Remarques |
using System; namespace Exemples { class ModificateurParametres { static int Add(params int[] iarr) { int sum = 0; foreach (int i in iarr) sum += i; return sum; } static void Main(string[] args) { int somme = Add(1, 2, 3, 4, 5); // affiche 15 Console.WriteLine(somme); Console.ReadKey(); } } } |
15 |
Affiche la somme des entiers passés en argument à la méthode Add. |