Le langage C#

Voici une fiche résumant les syntaxes principales du langage C#. La logique du langage reste très proche de celle du Java.

Rappels

Espace de nommage

using System;
namespace Projet { … }

Types et conversion

int i = 1;
float s = 1.0f;
double d = 1.0;
int k = (int) (s);

Chaînes de caractères

string g = "Hello !\n"

Tableaux 1D

int[] T = new int[100];
int[] T = new int[] { 5, 6, 7 };
for(int i=0;i<T.length;i++) Aff(T[i]);
foreach (int v in T) Aff(v);

Tableaux 2D

int[,] K = new int[2,2];
K = new int[,] {{4, 5,},{6,7}};
Aff(K[1,2]);

Attention, la syntaxe T[1][2] existe en C# mais s’utilise dans un tout autre contexte, à ne pas utiliser.

Clonage

// Choix 1 :
int [] T2 = new int[T1.Length];
T1.CopyTo(T2,0) ;
// Choix 2 :
int [] T2 = (int []) T1.Clone();

Propriétés

class P
{
        private string _Nom;
        public string Nom
        {
                get { return _Nom; }
                set { _Nom = value; }
        }
        // ou
        public int Age { get; set; }
}

Passage par référence des valeurs

void fnt2(ref int b)   { b++ ; }

void fnt1()
{
        int a = 7 ;
        fnt2(ref a);
        aff(a); // 8
}

Héritage

class A
{
        public A() {…}
}
class B : A
{
        public B() : base() {…}
}

Constructeurs

class Cercle
{
        // CTR par défaut
        public int x = 0; // init explicite
        public int y;     // init implicite
        public Cercle()   // CTR sans argument
        {
                x = 10 ; y = 10 ;
        }
        public Cercle(int _x, int _y)
        {
                x = _x ; y = _y ;
        }
}
Cercle c1   = new Cercle();
Cercle c2   = new Cercle(4,5);
Cercle [] v = new Cercle[5];

Polymorphisme

class A
{
        public virtual void Aff() {…}
}
class B : A
{
        public override void Aff() {…}
}

Conteneurs génériques

using System.Collections.Generic;

List<T>          : Tableau dynamique
Stack<T>         : Pile
LinkedList<T>    : Liste doublement chainée
Dictionnary<K,V> : Couples clé/valeur

Classe générique

public class Stack<T>
{
        T[] m_Items;
        public void Push(T item) {…}
        public T Pop() {…}
}
Stack<int> stack = new Stack<int>();
stack.Push(1);
int number = stack.Pop();