J'ai une page Web, dans laquelle il y a une sorte que je dois commander la liste par les traits chinois.
J'ai créé une application contenant du code comme celui-ci: p> Mais il y a une erreur: Qu'est-ce que cela signifie et comment puis-je le réparer? p> p> au moins un objet doit mettre en œuvre IComparable. code> p>
4 Réponses :
étudiant code> doit mettre en œuvre
icomparable code>. p>
public class Student : IComparable { private string message = null; public Student(string message) { this.message = message; } #region IComparable Members public int CompareTo(object obj) { // implement your logic, here is a example: if (obj != null) return message.CompareTo(((Student)obj).message); return int.MinValue; } #endregion }
Pourquoi retournez-vous minvalue si obj est null? Cela semble genre de bizarre.
@DANGPH: Cela signifie simplement que tous les étudiants doivent comparer avant null code>, qui n'est pas déraisonnable.
@Platinum Azure, la DOCS pour dis dire icomparable, "par définition, tout objet se compare supérieur à NULL". C'est donc le mauvais côté. Aussi, pourquoi Minvalue en particulier? Si je voyais que je suppose que cela avait une signification particulière, mais ce n'est pas le cas.
@DANGPH: n'est-ce pas juste une convention?
@Platinum Azure, si vous vous référez aux objets comparant supérieurs à NULL, je dirais que cela fait partie de la spécification i> pour icomarable, ce n'est pas simplement une convention. Si vous parlez de Minvalue, je dirais que la Convention d'un numéro négatif par défaut est d'utiliser -1.
@Dangph merci Dangph, vous avez raison. Je ne pensais pas trop l'exemple donné, je veux juste retourner un nombre négatif.
Vous devez avoir votre Par exemple, si le constructeur Initialise un champ code> nom code>, vous pouvez avoir quelque chose comme ceci: p> Etudiant Code> Classe Implémentez l'interface code> Icomarable CODE>. Cela nécessite la mise en oeuvre d'une méthode
comparèteo code>, qui peut simplement renvoyer le résultat de l'appelant
comparète code> entre les chaînes que vous essayez de commander par exemple.
Plutôt que de mettre en œuvre icomparable code>, pourquoi pas simplement utiliser un peu de linq?
Si j'utilise ce "ordonnance", le résultat n'est pas tout à fait juste. sinon, si la garantie de la table est 'sql_latin1_generaleral_cp1_ci_as', ce n'est pas ce que je veux. Je dois commander la liste avec 'chinois_prc_stroke_cif_as'. Mon E est très pauvre, il y a des erreurs, s'il vous plaît!