Est-il possible d'avoir un champ virtuel/abstrait dans une classe C# ? Si oui, comment est-il fait?
Réponses
Trop de publicités?Un champ Virtuel/Abstrait ? Non. Les champs ne sont là que pour contenir des données. Il n'y a rien à mettre en oeuvre.
Vous pouvez cependant définir une propriété virtuelle/abstraite .
La première phrase de la documentation MSDN répond à votre question :
Le mot-clé virtual est utilisé pour modifier une méthode, une propriété, un indexeur ou une déclaration d'événement et lui permettre d'être remplacé dans une classe dérivée.
http://msdn.microsoft.com/en-us/library/9fkccyh4(v=vs.80).aspx
Non, un champ ne peut être affecté qu'à non, surchargé.
Cependant, vous pourriez probablement utiliser une propriété et elle aurait presque la même apparence
public class MyClass {
public int MyField; //field
public virtual int MyProperty { get; set; } //property
}
les deux s'habituent ainsi :
var x = new MyClass();
Debug.WriteLine("Field is {0}", x.MyField);
Debug.WriteLine("Property is {0}", x.MyProperty);
À moins que le consommateur n'utilise la réflexion, le résultat est exactement le même.