53 votes

propriétés virtuelles

J'ai utilisé et appris uniquement les méthodes virtuelles de la classe de base sans aucune connaissance des propriétés virtuelles utilisées comme

 class A
{
   public virtual ICollection<B> prop{get;set;}
}

Quelqu'un pourrait-il me dire ce que cela signifie ?

64voto

Zenexer Points 4192
public virtual ICollection<B> Prop { get; set; }

Se traduit presque directement par :

 private ICollection<B> m_Prop;

public virtual ICollection<B> get_Prop()
{
    return m_Prop;
}

public virtual void set_Prop(ICollection<B> value)
{
    m_Prop = value;
}

Ainsi, le mot-clé virtual vous permet de surcharger la propriété dans les sous-classes comme vous le feriez avec les méthodes get/set ci-dessus :

 public override ICollection<B> Prop
{
    get { return null; }
    set { }
}

13voto

user3863369 Points 12

En programmation orientée objet, une propriété virtuelle est une propriété dont le comportement peut être remplacé au sein d'une classe héritante. Ce concept est une partie importante de la partie polymorphisme de la programmation orientée objet (POO).

regardez l'exemple ci-dessous :

 public class BaseClass
{

    public int Id { get; set; }
    public virtual string Name { get; set; }

}

public class DerivedClass : BaseClass
{
    public override string Name
    {
        get
        {
            return base.Name;
        }

        set
        {
            base.Name = "test";
        }
    }
}

au niveau de la présentation :

         DerivedClass instance = new DerivedClass() { Id = 2, Name = "behnoud" };

        Console.WriteLine(instance.Name);

        Console.ReadKey();

la sortie sera "test" car la propriété "Name" a été remplacée dans la classe dérivée (sous-classe).

2voto

Tarik Points 16118

Les propriétés sont en fait des cas particuliers des méthodes Getter et Setter. Ils ressemblent donc à des combinaisons de méthodes Getter et Setter, comme indiqué ci-dessous :

 private string _name;

public string GetName()
{
   return _name;
}

public void SetName(string value)
{
   this._name = value;
}

Ainsi, le virtual est également le même pour les propriétés, ce qui signifie qu'il peut être remplacé par les classes enfants et que l'implémentation initiale peut être modifiée.

1voto

loodakrawa Points 725

Les propriétés sont une forme abrégée des méthodes d'accès (Get & Set). Cela signifie que le mot-clé virtual a la même signification qu'avec toute autre méthode. Cela signifie que vous pouvez le remplacer dans les classes dérivées.

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