2009-03-27 3 views

Répondre

4

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()).

1

Pour une classe générique que vous pouvez faire:

public class MyType<T> 
    where T:IComparable<T> 
0

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); 
+0

Je crois qu'il finira par lancer s'il ne peut pas trouver un IComparable approprié – JaredPar

+0

Eh bien, 'IComparable ', puis 'IComparable', puis jeter (pas' IComparer 'etc) –

+0

Mis à jour pour réfléchir, merci. – bendewey

Questions connexes