Je dois m'assurer qu'un type de données implémente l'interface IComparable, et je me demandais s'il y avait de toute façon une exigence quand vous créez l'objet IComparable.Comment puis-je m'assurer qu'un type de données implémente une interface IComparable?
Répondre
Vous pouvez peut-être utiliser générique pour ce faire, par exemple:
public static T Create<T>() where T : IComparable<T>, new() {
return new T();
}
Ou si vous voulez dire « lorsque vous créez le type » (dans le code), aucune; vous devez juste vous rappeler, peut-être en utilisant des tests unitaires pour vérifier que vous l'avez fait.
Je recommande d'utiliser le IComparable<T>
tapé sur IComparable
- il rend la vie beaucoup plus facile (et évite la boxe, mais qui est moins un problème). Enfin, rappelez-vous que vous pouvez utiliser Comparer<T>.Default
et Comparer.Default
dans le code si vous voulez dactylographier le bit comparable (comme fonctionne List<T>.Sort()
).
Pour une classe générique que vous pouvez faire:
public class MyType<T>
where T:IComparable<T>
Vous pouvez également regarder dans Comparer<T>.Default. D'après ce que je comprends, il obtient le IComparable < T> d'abord, s'il ne trouve pas cela alors il obtient la version IComparable, sinon il lève une exception.
double s = 5;
double t = 10;
int result = Comparer<double>.Default.Compare(s, t);
- 1. qui interface une classe implémente?
- 2. Test si un objet implémente une interface
- 3. Récupérer une liste d'objet qui implémente une interface donnée
- 4. Comment trouver quelle classe (s) implémente une interface (.Net)
- 5. Une classe qui implémente une interface qui prend un ENUM
- 6. Existe-t-il un type ou une interface qui implémente la collection et la valeur sélectionnée?
- 7. Comment utiliser l'interface IComparable?
- 8. Comment approcher une classe qui implémente une interface et a une classe de base?
- 9. Comment créer une classe Java qui implémente une interface avec deux types génériques?
- 10. Obtention d'arguments de type d'interfaces génériques qu'une classe implémente
- 11. Comment puis-je exiger qu'un paramètre générique soit une énumération qui implémente une interface?
- 12. Comment vérifier en Java en utilisant JIntegra si l'objet COM implémente une interface?
- 13. Quel est le moyen le plus simple de savoir si un param de type implémente une interface dans C# 2.0?
- 14. Comment déterminer si un type implémente un type d'interface générique spécifique
- 15. Détecter si le type implémente ICollection <T>
- 16. Comparer.Compare a besoin d'un objet qui implémente IComparable mais jetteront exception sinon le premier paramètre est
- 17. C# Casting Type générique
- 18. MSDN: Comment puis-je voir ce qui hérite/implémente une classe/interface?
- 19. Int32? avec IComparable
- 20. Comment lancer une interface en tant que type dans C#?
- 21. Comment écrire une classe générique qui implémente une interface ayant des méthodes génériques avec des contraintes définies
- 22. C# - Interface - Type initilization
- 23. Comment puis-je savoir quand une interface est directement implémentée dans un type ignorant ceux hérités?
- 24. Devrais-je utiliser une interface pour les codes de type?
- 25. Conversion de tableau double en tableau IComparable
- 26. Problèmes avec tri et de IComparable
- 27. Comment lancer une interface vers sa sous-interface?
- 28. Conversion d'un tableau de type T en un tableau de type I où T implémente I dans C#
- 29. Comment modéliser une interface de type OO pour les fonctions C?
- 30. Iphone type de données
Veuillez clarifier la question. Je peux penser à un certain nombre de choses que vous pourriez vouloir dire, mais ils auraient tous des réponses différentes. –