Capture d'écran d'erreur
Je crée un paquet de classes génériques, spécifiant progressivement le type générique de t strong> à exemple_of_storded_class fort>. public class ModifiedList<example_of_stored_class> : AdvancedList<example_of_stored_class>
{
public void someMethod ()
{
}
}
public class AdvancedList<T> : List<T> where T : example_of_stored_class
{
public AdvancedList ()
{
}
}
public class example_of_stored_class
{
public string s = "Hi, i'm an example_of_stored_class!";
}
3 Réponses :
La première apparition de mais vous héritez cette classe générique d'une autre classe générique, où Vous fournitures em> Vous avez trouvé un moyen de faire ceci compilera: p> mais je soupçonne que vous voulez vraiment ou bien ce - Vous voulez que exemple_of_storded_class soit le seul paramètre de type sur l'image. C'est ce cas, une modificationListe n'est pas générique. Il hérit d'une classe générique "réalisée", qui a déjà un paramètre de type fourni. p> exemple_of_stored_class code> Voici un paramètre type em>, car il apparaît sous des crochets d'angle après le nom de la classe dans une définition de classe: par les règles de C #, vous "Re disant que modifiedclass code> prend un paramètre de type nommé exemple_of_storded_class code>. Quelqu'un utilisant votre classe pourrait fournir tout type réel de ce paramètre (au moins, si le tout est compilé pour commencer): exemple_of_stored_class code> comme la valeur em> du paramètre type de AdvancedList. Nous ne définissons pas ici la définition de la liste de jeunesse, de sorte que le type entre les crochets est interprété comme un type que vous souhaitez utiliser pour le paramètre Type. P> exemple_of_storded_class code> moyenne deux choses différentes de la même ligne et que la confusion a abouti. p> modifié Advancedlist
C'était:
public class ModifiedList : AdvancedList<example_of_stored_class>
{
public void someMethod()
{
}
}
Vous ne pouvez pas écrire: car dans la première partie de la déclaration, vous devez indiquer un paramètre générique utilisé pour "substitution". p> comme cela ne peut pas être un type. p> Vous devez écrire: p> où T n'est pas un code défini Tapez comme une classe parce qu'il s'agit d'un artefact de modèle. p> Le mot "modèle" désigne ici des modèles C ++, même les génériques C # ne sont pas identiques aux modèles C ++, mais des génériques historiques proviennent de modèles. P>
Manquez-vous classe publique code> préfixes?
Veuillez poster des erreurs comme texte, dans le corps de votre question. Les captures d'écran sont très gênantes pour ceux d'entre nous qui lisent votre question et qu'ils ne sont pas consultables.
Est r7_app votre classe ou votre espace de noms?
Avez-vous défini
exemple_of_storded_class code> deux fois accidentellement, une fois dans un espace de noms global et une fois dans l'espace de nomsr7_app code>?Notez que
Classe publique modifiée code> définit un type générique nommé exemple_of_storded_class code> n'utilise pas le type de classeexemple_of_storded_class code>.