11
votes

Toute possibilité de déclarer des indexeurs en C # comme membre abstrait?

Comme le titre dit, je voudrais déclarer un objet indexer cet objet [int index] dans une classe abstraite en tant que membre abstrait.

est-ce possible de quelque manière que ce soit? Est-il possible de déclarer cela dans une interface aussi?


0 commentaires

3 Réponses :


18
votes

bien sûr :

public abstract class ClassWithAbstractIndexer 
{
    public abstract int this[int index]
    {
        get;
        set;
    }
}


4 commentaires

Merci! J'ai essayé objet abstrait public ceci [int index]; alors objet public ceci [int index] {abstrait get; } mais aucun d'entre eux n'a travaillé. Comment est-il déclaré dans une interface?


@ Fire-dragon-dol: supprimer abstrait à partir de votre obtenir dans votre classe dérivée.


Public n'est pas valide dans une interface, car tous les membres de l'interface sont implicitement public .


Ce n'est pas une interface - mais une partie d'une déclaration de classe abstraite



2
votes

Un exemple simple:

public interface ITest
{
    int this[int index] { get;  }
}

public class Test : ITest
{
    public int this[int index]
    {
        get { ... }
        private set { .... }
    }
}


0 commentaires

0
votes

Vous pouvez le déclarer comme ceci: xxx

vous aurez la possibilité de remplacer uniquement obtenir ou de remplacer les deux obtenir et définir .


1 commentaires

Cela ne compile pas.