Ajouter aux favoris  Imprimer  www.labo-dotnet.com
 
 
Recherche


Recherche Avancée


Derniers Articles
[PDC2008] Keynote 2 : Windows 7 sur un piedéstal
-> Divers
Publié le
1 novembre 2008
Stopwatch : mesurer le temps d’exécution de votre code
-> C#
Publié le
27 octobre 2008
MSDN Tour 2008 (Strasbourg) - Jour 2
-> Divers
Publié le
23 octobre 2008
MSDN Tour 2008 (Strasbourg) - Jour 1
-> Divers
Publié le
23 octobre 2008
Récupérer des informations de manière aynchrone avec ASP.NET AJAX
-> ASPNET
Publié le
19 octobre 2008


Syndication 
Derniers Articles
ADO.net
ASPNET
C#
Divers
Mobile
Office
VB.net
Win FX
Articles

ADO.netASPNETC#DiversMobileOfficeVB.netWin FX
Exemple de code : Constructeur de classe (C# 3.5)
Prenons une classe quelconque avec une propriété :

public class MyClass
{
   public String MyProperty { get; set; }
}

Nous allons maintenant voir une nouvelle façon de créer une instance de cette classe en définissant une valeur pour la propriété MyProperty.

MyClass variableA = new MyClass() { MyProperty = "Bonjour" };
MyClass variableB = new MyClass();
variableB.MyProperty = "Bonjour";

Vous remarquez le premier appel du constructeur avec l'assignation de la valeur à la propriété MyProperty est entre accolades.
Quelle est la différence entre ces deux méthodes ? Voyons ce que nous propose Reflector :

MyClass <>g__initLocal0 = new MyClass();
<>g__initLocal0.MyProperty = "Bonjour";
MyClass variableA = <>g__initLocal0;
MyClass variableB = new MyClass();
variableB.MyProperty = "Bonjour"
;

Avec ce code, nous pouvons comprendre le mécanisme de création de la variable A. La CLR commence par créer une instance de la classe MyClass en temporaire dans la mémoire de l'ordinateur, ensuite elle affecte une valeur à la propriété MyProperty de la variable temporaire puis si aucune erreur n'est déclenchée, la variable variableA reçoit la référence de la variable temporaire.
Dans la seconde méthode, on créé simplement une nouvelle instance de la classe MyClass que l'on affecte à notre variable variableB puis on change la valeur de sa propriété MyProperty.

Par Fabien Lavocat
Publié le 24 mars 2008

Exemple de code : Propriétés automatiques C(#3.5)

En C#2.0, comment fesions-nous pour créer des attributs avec leurs propriétés associées ?

private String _myProperty;

public String MyProperty
{
 get { return this._myProperty; }
 set { this._myProperty = value; }
}

Et voilà ce que le logiciel Reflector traduit à partir du code IL généré à la compilation :

private string _myProperty;

public string MyProperty
{
  get
  {
  return this._myProperty;
  }
  set
  {
  this._myProperty = value;
  }
}

Vous remarquez que ce sont exactement les même lignes.
Nous allons maintenant utiliser la simplification d'écriture de C#3.5 :

public String MyProperty
{
 get;
 set;
}

Il n'est désormais plus nécessaire de créer l'attribut privé ainsi que le contenu des méthodes get et set de la propriété.
Voilà ce que Reflector nous génére à partir du code IL :

public string MyProperty
{
  [CompilerGenerated]
  get
  {
  return this.k__backingfield;
  }
  [CompilerGenerated]
  set
  {
  this.k__BackingField = value;
  }
}

L'attribut [CompilerGenerated] qui est rajouté par le compilateur indique que c'est lui-même (le compilateur) qui as créé le contenu de la méthode. k__backingfield permet à la CLR de récupérer ou modifier la valeur auquel fait référence la propriété étant donné que tout à été généré par le compilateur.

Si vous ne connaissez pas Reflector, je vous conseille de jeter un coup d'oeil sur ce logiciel : http://www.aisto.com/roeder/dotnet/
Autre lien : http://www.blog-microsoft.fr

Par Fabien Lavocat
Publié le 23 mars 2008

Exemple de code : Convertion Explicite

A la différence de la convertion implicite, la convertion explicite est obligatoire lors qu'il y a un risque de perte de données. On utilise alors le mot clef explicit, ainsi que le type de l'objet cible entre parenthèses. Exemple :

Prennons une classe Euro et une classe Dollar afin de faire des conversions :

public class Euro
{
  public Single Value { get; set; }
  public static explicit operator Euro(Dollar value)
  {
    return new Euro() { Value = value.Value * 0.6476f };
  }
}

public class Dollar
{
  public Single Value { get; set; }
  public static explicit operator Dollar(Euro value)
  {
    return new Dollar() { Value = value.Value * 1.5435f };
  }
}

La méthode permettant de faire la convertion explicite doit être marquée static et on utilise les mots clefs explicit et operator :

public static explicit operator Type d'arrivée(Type de départ value)
{
  Traitement de la convertion...
}

Voilà comment faire la convertion explicite :

Euro euro = new Euro() { Value = 15 };
Dollar dollar = (Dollar)euro; // Convertion explicite
Console.WriteLine(euro.Value.ToString() + "€ = $" + dollar.Value.ToString());
// Affiche : 15€ = $23.1525

Lien MSDN : http://msdn2.microsoft.com/fr-fr/library/xhbhezf4.aspx
Autre lien : http://www.blog-microsoft.fr

Par Fabien Lavocat
Publié le 22 mars 2008

Exemple de code : Convertion implicite
 Introduction

Par Fabien Lavocat
Publié le 21 mars 2008

Exemple de code : LINQ to XML

 

Par Fabien Lavocat
Publié le 20 mars 2008

Exemple de code : Méthodes d'extension
Comment fallait-il faire pour créer une méthode bien spécifique à un type de données bien précis ?

Par exemple, nous pouvons créer une méthode dans la classe souhaité et appliquer un traitement à un objet. Ok c’est bien, mais lorsque nous n’avons pas accès au code source de la classe en elle-même me diriez-vous, comme les classes du framework. Nous créons simplement une méthode static qui prend en paramètre une valeur de ce type, qui applique un traitement et retourne le résultat.


Mais comme vous avez déjà vu pas mal d’articles sur les nouveautés du C#3, un simple rappel sur les méthodes d’extention s’impose. En effet, grâce à cette nouveauté, il suffit de créer une méthode static, dans une classe static, qui prendra en paramètre une valeur de ce type, précédé du mot clef this , d’appliquer un traitement et d’en retourner le résultat.
Cette méthode sera disponible depuis n’importe quel point de votre code sur le type dont vous avez écrit la méthode.


class Program
{
static void Main(string[] args)
{
Int32 i = 5;
Console.WriteLine(i.Square());
// ==> 25
Console.WriteLine((5).Square());
// ==> 25


String s = “Hello”;
Console.WriteLine(s.InversChars());
// ==> olleH
Console.WriteLine(“Hello”.InversChars());
// ==> olleH
}
}


static class ExtendMethods
{
public static Int32 Square(this Int32 integer)
{
return integer * integer;
}


public static String InversChars(this String s)
{
String tmp = “”;
for (Int32 i = s.Length - 1; i >= 0; i–)
tmp += s[i];
return tmp;
}
}


Lien MSDN : http://msdn2.microsoft.com/fr-fr/library/bb383977.aspx
Autre lien : http://www.blog-microsoft.fr


Par Fabien Lavocat
Publié le 19 mars 2008

Exemple de code : LINQ to Object

LINQ (Language-Integrated Query) est une technologie incluse dans le framework 3 permettant d’écrire des requêtes directement dans le language C#, VB.NET, ou tout autre langage .NET. Il existe de multiples tournures de LINQ, pour des sources de données différentes (LINQ to Object, LINQ to XML, LINQ to SQL…)

Dans cet exemple nous allons voir comment faire des requêtes sur des collections d’objets.

// Collection de départ
List<int32> lst = new List<int32>() { 15, 14, 10, 1, 15, 5, 4, 4, 19, 100 };

// Création d’une nouvelle collection
// . Nous souhaitons récupérer uniquement les valeurs
// . distinctes de la collection de départ supérieures à 10
// . dans l’ordre décroissant

IEnumerable<int32> tmp = from value in lst.Distinct<int32>()
                     where value > 10
                     orderby value descending
                     select value;

// On affiche les résultats
foreach (int32 i in tmp)
      Console.WriteLine(i);

// Résultat :
// . 100
// . 19
// . 15
// . 14

Lien MSDN : http://msdn2.microsoft.com/fr-fr/library/bb397676.aspx
Autre lien : http://www.blog-microsoft.fr

Bientôt d'autres exemples de code.

Par Fabien Lavocat
Publié le 18 mars 2008

Styles et Templates en WPF
Article d'introduction a l'utilisation de styles et templates avec WPF.

Par Xavier Poinas
Publié le 14 mars 2008

Workshop Ajax.net aux TechDays 2008

Je vous présente dans cette article un Workshop qui nous a été proposé au Techdays sur la technologie Ajax.net

Par Freddy hebrard
Publié le 6 mars 2008

Visual Studio 2008 : Les nouveautés de l’accès aux données avec LINQ !

Cet article a pour but de vous expliquer les nouvelles techniques d'accès aux données à l'aide du Framework LINQ (Langage INtegrated Query). Comme vous l'apprendrez au cours de cette initiation, LINQ va vous permettre, assez simplement, d'effectuer des requêtes sur des bases de données, des DataSets, mais aussi directement sur des objets et bien d'autres source de données. Ici sont exposés les concepts de base à comprendre afin d'utiliser au mieux ce nouvel outil dans la conception de vos applications.
 

 

Par Julien Corioland
Publié le 11 décembre 2007

    
< Page Précédente Page : 1 2 3 4 5 6  Page Suivante >
 

 

 
   
© Copyright SUPINFO - International University
Conditions dutilisation et Copyright - Respect de la vie prive
Labo Microsoft | Forum Microsoft | Forums .Net | Labo .Net | Blogs | FaqXP | Certifications
 
Créer un compte | Connexionsamedi 22 novembre 2008