Comment est-il possible de créer un objet de la classe abstraite?
Nous savons que le Tableau de la classe en c# est abstrait.
Mais la statique de la méthode CreateInstance de cette classe renvoie un objet de la classe Array.
Comment est-il possible?
Une meilleure question est: "pourquoi pensez-vous que c'est impossible?" Supposons que l'Animal est une classe abstraite. Est-ce à dire que vous ne pouvez pas avoir une méthode qui retourne un Animal? Pouvez-vous expliquer pourquoi vous pensez que ce n'est pas possible?
Merci Eric. J'ai pensé que la méthode CreateInstance retourne un Tableau d'objet de classe directement.
Merci Eric. J'ai pensé que la méthode CreateInstance retourne un Tableau d'objet de classe directement.
OriginalL'auteur Hojjat | 2012-01-14
Vous devez vous connecter pour publier un commentaire.
Description
Non, tu ne peux pas créer une instance d'une classe abstraite.
Plus D'Informations
OriginalL'auteur dknaack
C'est un statique usine méthode qui renvoie une instance de tableau. cet exemple crée un tableau de taille 10 pour la valeur entière types.
Cela devrait vous donner plus de détails http://msdn.microsoft.com/en-us/library/zb3cfh7k.aspx
OriginalL'auteur SkeetJon
Array
semble être un cas particulier de la classe abstraite. De ce que j'ai lu dans La Documentation je proposerais queArray
création et les fonctions sont en quelque sorte géré en interne .NET Framework code - probablement largement à l'aide du code natif pour de meilleures performances. Je pense que c'est pourquoi cette classe ont été abstraites.Je serais heureux si quelqu'un de plus compétent .NET Framework internes peuvent améliorer ma réponse.
les tableaux sont spécialement traités dans plusieurs façons .Net (par exemple, il y a IL des instructions spécifiques pour gérer les tableaux). Qui est en fait ce que je voulais dire - juste ne pas en connaître les détails 🙂
OriginalL'auteur Sergey Kudriavtsev
Les différentes surcharges de la méthode
Array.CreateInstance()
sont typées comme retourArray
, qui en effet est une classe abstraite. Mais le type de l'objet de leur retour n'est pas directementArray
, c'est un type qui hérite deArray
(quel type exactement dépend de la surcharge utilisé et les paramètres que vous passez dans).Par exemple:
Fondamentalement, c'est le même principe comme suit méthode de fabrique:
Ici,
Animal
est un type de base abstrait,Cat
etDog
sont les types de béton qui héritent deAnimal
etanimalType
nous dit quel type de la méthode de retour.Maintenant, les tableaux sont spécialement traités dans plusieurs façons .Net (par exemple, il y a IL des instructions spécifiques pour gérer les tableaux). Mais ils ne sont pas une exception dans le système de type (à l'exception, peut-être pour la matrice de covariance).
OriginalL'auteur svick
Je pense que la meilleure façon de se rapporter à cette situation en tenant compte d'une méthode qui vous renvoie l'instance d'une interface!!!
Eh bien, vous savez que nous pouvons pas créer une instance d'une interface, mais en interne, une méthode peut savoir à propos d'une classe implémentant cette interface, et de retour instance de cette classe.
OriginalL'auteur Manish Basantani