Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Xi's Blog

Trucs et Astuces .NET

Opérateurs de conversion
Il est possible en C# de définir comment doit s'opérer une conversion implicite et comment doit s'opérer une conversion explicite entre deux objets de types différents.
Pour cela, on utilise les opérateurs de conversion :

public static implicit operator conv-type-out ( conv-type-in operand )
public static explicit operator conv-type-out ( conv-type-in operand )


Exemple :
public static explicit operator double(Fraction f)
{
return (double)f.num / f.den;
}
[...]

Fraction f = new Fraction(3, 5);
double d = (double) f;
Relancer une exception qu'on vient de récupérer

Attention, post sans grande prétention :) sinon celle de rappeler un petit truc élémentaire.

try
{
    [...] // Code susceptible de lever une exception
}
catch
{
    [...] // Traitement de l'exception
    throw; // On lève l'exception qu'on vient de récupérer pour la faire remonter plus haut
}

Implémentation d'une Interface

Imaginons une interface IDriveable (c'est l'exemple pris dans le Kit de Formation C# Winforms) :

public interface IDriveable
{
    void MoveForward();
}

On veut créer une classe Car qui implémente l'interface IDriveable, nous avons deux manières de procéder :

- Implémentation 1 -
public class Car : IDriveable
{
    public void MoveForward()
    {

    }
}

ou

- Implémentation 2 -
public class Car : IDriveable
{
    public void IDriveable.MoveForward()
    {

    }
}

Quelle est la différence entre ces 2 implémentations de Car ?
Dans la deuxième implémentation, la méthode MoveForward ne sera accessible que quand l'object de classe Car sera casté en IDriveable :

Car porsche = new Car();
// porsche.MoveForward(); n'est pas possible
IDriveable porsche2 = porsche;
porsche2.MoveForward(); // Là, c'est possible

Il est surement arriver à certains de chercher une méthode dans une description de classe sans la trouver alors qu'ils étaient persuadés avoir déjà vu cette méthode dans cette classe. Beaucoup des classes du framework ont été codées en utilisant la 2e implémentation. Maintenant on sait où se trouvent les méthodes invisibles :)

Bienvenue

Bonjour à tous,

Je suis en train de compléter mes connaissances en .NET afin de passer les certifications nécessaires à l'obtention du titre MCSD de Microsoft.
J'apprends énormément grâce aux kits de formation et aux MOC. Je vais m'efforcer de publier ici les trucs et astuces que je juge les plus utiles.

En espérant que cela puisse servir à quelqu'un,

Aymeric.



Les 10 derniers blogs postés

- TechDays Paris 2012 : Session pleinière jour 3 par Blog Technique de Romelard Fabrice le il y a 21 heures et 43 minutes

- Mishra Reader : un lecteur RSS très Zune Style en Open Source ! par Cyril Sansus le 02-09-2012, 08:28

- [framework 4] Les Tasks et le Thread UI par Fathi Bellahcene le 02-09-2012, 00:33

- Workflow Foundation 3 a un pied dans la tombe par Blog de Jérémy Jeanson le 02-08-2012, 22:15

- TechDays Paris 2012 : Nouvelles tendances du poste de travail - Bring Your own PC par Blog Technique de Romelard Fabrice le 02-08-2012, 19:42

- TechDays Paris 2012 : System Center Service Manager 2012 Vue d’ensemble par Blog Technique de Romelard Fabrice le 02-08-2012, 17:32

- TechDays Paris 2012 : Pleinière second jour par Blog Technique de Romelard Fabrice le 02-08-2012, 16:23

- TechDays Paris 2012 : Retour d'expérience sur la mise en place d'un Cloud Privé par Blog Technique de Romelard Fabrice le 02-08-2012, 16:04

- TechDays Paris 2012 : Comment SharePoint a sauvé mes TechDays par Blog Technique de Romelard Fabrice le 02-07-2012, 23:59

- Perspective 3.0 pour Silverlight 5.0 par Perspective le 02-07-2012, 22:39