Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Abonnements

C# 3 : la correction d'un bug sur le compilateur qui peut empêcher votre code écrit en C# 2 de compiler

Comme l'explique Eric Lippert dans son dernier post, en C# 3.0, le code suivant ne compilera pas :

public class Item

{

    private Item _parent;

    public Item Parent

    {

        get { return _parent; }

        protected set { _parent = value; }

    }

}

public class Bag : Item

{

    private List<Item> list = new List<Item>();

    public void Add(Item item)

    {

        item.Parent = this; // Error in C# 3.0

        list.Add(item);

    }

}

Pourquoi ? Quand on utilise la visibilité protected (non static), cela signifie que l'on expose la méthode (ou la propriété) à l'instance de classe (instance directe ou instance d'une classe dérivée). Cependant, dans le cas présent, on veut appeler le set de Parent non pas sur nous même mais sur une autre instance. Par conséquent, on ne devrait pas y avoir accès. En C# 2, c'était possible car il y avait un bug sur les propriétés dont on avait changé la visibilité de l'un des opérateurs mais avec la correction apportée par l'équipe C#, ce n'est plus possible en C#3.

On pourra cependant regretter que le message d'erreur ne soit pas franchement explicite :

Cannot access protected member 'ConsoleApplication80.Item.Parent' via a qualifier of type 'ConsoleApplication80.Item'; the qualifier must be of type 'ConsoleApplication80.Bag' (or derived from it)

Pour plus d'infos, je vous invite à lire le post d'Eric Lippert qui explique notamment comment contourner cela.

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Publié samedi 29 mars 2008 08:34 par Matthieu MEZIL

Classé sous : ,

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Installer un site ASP.net 32bits sur un serveur exécutant SharePoint 2013 par Blog de Jérémy Jeanson le il y a 7 heures et 49 minutes

- [ SharePoint Summit 2014 ] Tests de montée en charge SharePoint par Le blog de Patrick [MVP SharePoint] le il y a 17 heures et 39 minutes

- [ SharePoint Summit 2014 ] Bâtir un site web public avec Office 365 par Le blog de Patrick [MVP SharePoint] le il y a 19 heures et 53 minutes

- Kinect + Speech Recognition + Eedomus = Dommy par Aurélien GALTIER le il y a 21 heures et 6 minutes

- [ SharePoint Summit 2014 ] Une méthodologie simple pour concevoir vos applications OOTB SharePoint de A à Z par Le blog de Patrick [MVP SharePoint] le il y a 21 heures et 32 minutes

- //Lean/ - Apprendre à faire des Apps Windows universelles par Blog de Jérémy Jeanson le 04-16-2014, 12:57

- Une culture de la donnée pour tous… par Le blog de Patrick [MVP SharePoint] le 04-16-2014, 11:00

- [ SharePoint Summit 2014 ] L’utilisation de SharePoint 2013 pour la mise en place d’un site Internet Grand Public par Le blog de Patrick [MVP SharePoint] le 04-15-2014, 20:51

- [ SharePoint Summit Montréal 2014 ] Mes présentations sont en ligne par Le blog de Patrick [MVP SharePoint] le 04-15-2014, 18:16

- [ SharePoint Summit Montréal 2014 ] L'intelligence d'affaire dans O365 : enfin facile et économique grâce aux dernières évolution de la Power BI par Le blog de Patrick [MVP SharePoint] le 04-15-2014, 17:07