41 votes

Champs virtuels/abstraits en C#

Est-il possible d'avoir un champ virtuel/abstrait dans une classe C# ? Si oui, comment est-il fait?

60voto

Justin Niessner Points 144953

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 .

9voto

SpikeX Points 5758

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

9voto

Blindy Points 26706

Vous pouvez cependant avoir des propriétés virtuelles ou abstraites :

 public abstract string ModelName { get; set; }

8voto

George Mauer Points 22685

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.

3voto

CD.. Points 23701

Non. Les champs ne peuvent pas être virtuels\abstraits, mais les propriétés le peuvent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X