Overblog Suivre ce blog
Editer l'article Administration Créer mon blog

Présentation

  • : Romagny13 - Du .NET,du pur .NET
  • Romagny13 - Du .NET,du pur .NET
  • : Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions
  • Contact

Recherche

Articles Récents

2 février 2014 7 02 /02 /février /2014 01:29

msil

2 types assembly(MSIL) :

*.exe executables

*.dll  bibliothèques

Visual studio c’est un éditeur, un compilateur qui traduit le c# en MSIL et un enironnement d’execution(CLR)

 

1-Tableau

Un tableau est de taille fixe alors qu’une liste est de taille variable

// tableau de 3 éléments, 1er élément à indice 0 et dernier élément à taille du tableau -1 

            int[] numbers = new int[3];

            numbers[0] = 10;

            numbers[1] = 20;

            numbers[2] = 30;

            //ou

            int[] numbers = new int[] { 10, 20, 30 };

            // parcours

            for (int i = 0; i < numbers.Length - 1; i++)

            { }

 

2-Framework .NET, GAC et MSDN

http://msdn.microsoft.com/fr-fr/library/

Le GAC (global assembly cache C:\Windows\assembly) répertorie tous les assemblys du Framework .NET accessibles (onglet .NET) depuis Visual Studio

L’assembly  mscorlib.dll est référencée par défaut dès que l’on crée un projet(pas de using).

MSDN indique le Namespace et l’Assembly à référencer

Exemple avec SqlDatareader

Namespace: System.Data.SqlClient
Assembly:  System.Data (in System.Data.dll)

3-Portée

public

Accès non restreint

protected

Accès depuis la classe ou une classe dérivée

private

Accès depuis la  classe

internal

Accès à  l'assembly uniquement

protected internal

Accès à  même assembly ou classe dérivée

 

 

4-La substitution

On peut redéfinir un membre hérité virtual (avec  le mot clé Override )

Exemple avec la méthode ToString() de la classe de base Object

 

public override string ToString()

{

   // code

}      

La classe de base Object

 

public class Object

{

    // ... code de la classe

    public virtual string ToString(){}         

}

     

Autre exemple avec un property

public class Person

    {

        public virtual string Name { get; set; }

 

    }

    public class Cient : Person

    {

        private string _name;

 

        public override string Name

        {

            get { return _name; }

            set { _name = value; }

        }

    }

 

5-Interfaces

Une interface est une sorte de contrat que les classes l’implémentant devront respecter

    public interface IClient

    {

        // pas de portée

        string Email { get; set; }

        string GetEmail();

    }

    //

    public class Client : IClient

    {

        // portées public

        public string Email { get; set; }

 

        public string GetEmail()

        {

            return this.Email;

        }

    }

une interface peut hériter d'une interface

    public interface IClientPrenium : IClient

    {

        int Age { get; set; }

    }

  

 

    public class ClientPrenium : IClientPrenium

    {

        public int Age { get; set; }

 

        public string Email { get; set; }

 

        public string GetEmail()

        {

            return this.Email;

        }

    }

 

6-Classes abstraites

 Une classe abstract ne peut être instanciée , à la différence des classes contenant des membres virtual .Une classe abstract peut avoir des méthodes abstraites (abstract) et concrêtes

 

Exemple : on ne peut pas créer d'instance de la classe abstraite Animal.Par contre on peut créer une instance de la classe Cat qui hérite d'Animal. 

    public abstract class Animal

    {

        public abstract void Move();

    }

    public class Cat :Animal

    {

        public override void Move()

        {          

        }

    }

 

7-Méthodes Static

public class Math

    {

        public static int Add(int a, int b)

        {

            return a + b;

        }

    }

    // il est possible de déclarer la classe static si celle -ci ne contient que des membres static, celle-ci devient alors non instanciable

    public static class Math

    {

        public static int Add(int a, int b)

        {

            return a + b;

        }

    }

Utilisation

Math.Add(3, 6);

 

8-Classes internes

public class Person

    {

 

        private class PrivateInfos

        {

            public string info { get; set; }

        }

    }

 

Person person = new Person();

// person n'a pas accès à la classe interne

 

 

9-Une classe ne pouvant être héritée.

Pour cela on utilise le mot clé sealed

public sealed class Client

    { }

 

 

Quelques conseils pour savoir quand rendre une classe sealed

http://msdn.microsoft.com/en-us/library/vstudio/ms229023(v=vs.100).aspx

 

10-Passage de paramètres

Par valeur

Par référence : il est possible de passer une valeur par référence pour que la méthode ne travaille pas sur une copie et la valeur, attention un objet est déjà une référence

De sortie out, il est possible de récupérer plusieurs valeurs en sortie d’une méthode en définissant une classe

 

11-readonly

Const : Un champ  const ne peut être initialisé que dans sa déclaration

 

 public const int i = 5; 

 

 

readonly : Un champ  readonly peut être initialisé soit dans la déclaration, soit dans un constructeur.

champ

        public readonly string mail;

  Property

        private string _mail;

        public string mail { get { return _mail; } }

 

               public string mail { get; private set; }

 

12-Structures    

public struct Person

    {

        public int PersonId { get; set; }

        public string PersonName { get; set; }

 

        public override string ToString()

        {

            return PersonId + " " + PersonName;

        }      

    }

On instancie de la même manière qu’avec une classe

Person person = new Person() { PersonId = 1, PersonName = "Bellin Marie" };

 

Les structures sont de type valeur.

Quand utiliser une structure plutôt qu’une classe ?

si les instances du type sont petites et ont une courte durée de vie ou qu'elles sont fréquemment incorporées à d'autres objets.

int,double,etc. sont des structures .Par contre string est une classe .

http://msdn.microsoft.com/fr-fr/library/ms229017.aspx

Problème du constructeur

Il faut initialiser obligatoirement tous les champs avant de leur affecter une valeur .On ne peut donc pas passer par les accesseurs simplifiés dans ce cas.

public struct Person

    {

        private int _personId;

        private string _personName;

 

        public int PersonId

        {

            get { return _personId; }

            set { _personId = value; }

        }

        public string PersonName

        {

            get { return _personName; }

            set { _personName = value; }

        }

 

        public Person(int id, string name)

        {

            _personId = 0;

            _personName = string.Empty;

 

            _personId = id;

            _personName = name;

        }

 

        public override string ToString()

        {

            return PersonId + " " + PersonName;

        }      

    }

 

13- string.Format

public static string Format(string format,Object arg0)

{0} correspond au  premier paramètre, {1} au second,etc.

{0 ;c} renoie la monnaie (tableau des formats http://msdn.microsoft.com/fr-fr/library/s8s7t687.aspx )

decimal piggyBank = 10;

string child = "Laura";

string message = string.Format("La tirelire de {0} contient {1:c}",child, piggyBank);

 

Partager cet article

Repost 0
Published by Romagny13 - dans C
commenter cet article

commentaires