en Java, je peux spécifier générique avec Wildcard "?". Il est possible de créer une carte comme celle-ci:
Je travaille avec c # et j'ai besoin d'un dictionnaire Exemple: p> mappe
> CODE> (Où? Peut être int, double, n'importe quel type). Est-ce possible dans c #? P>
Dictionary<String, ISomeInterface<?>> _objs = new Dictionary<String, ISomeInterface<?>();
_objs.Add("Object1", new ObjectI());
_objs.Add("Object2", new ObjectII());
_objs.Add("Object3", new ObjectII());
foreach(var keyVal in _objs){
Console.WriteLine(keyVal.Method());
}
3 Réponses :
NO. P>
Cependant, si vous utilisez C # 4, vous pouvez faire Si iSomeInterface code> covariant de sorte que
isomeinterface
iSomeInterface
iSomeInterface code> a des méthodes qui prennent des paramètres de son paramètre de type (par opposition aux valeurs de retour), cela sera complètement impossible, car il vous permettrait alors de passer des objets arbitraires comme les paramètres. < / p>
imyinterface
imyInterface code> et Déplacez tous les membres qui n'impliquent pas
T code> à l'interface de base.
Vous pouvez ensuite utiliser un dictionnaire
Il est possible de limiter vos variables de type à certains types: Cependant, vous ne pouvez pas faire quelque chose comme: p>
Pour l'utilisation que vous décrivez, vous pouvez utiliser une solution de contournement, avec un identificateur
Je ne connais pas Java si beaucoup mais ne serait pas
? Code> être identique à
objet code> alors?
Oui,
? Code> est
objet code>. Ce qui est plus inattendu, c'est que n'importe quoi i> vous écrivez qu'il y a réellement
objet code>, car Java's VM ne prend pas en charge les génériques, ils sont tous effacés à la compilation.