Maison  >  Article  >  développement back-end  >  Comparaison d'objets C#

Comparaison d'objets C#

PHPz
PHPzoriginal
2024-09-03 15:03:501032parcourir

La comparaison d'objets C# effectue une corrélation délicate entre deux objets de type similaire et renvoie une valeur démontrant si l'un n'est pas exactement, équivalent ou plus important que l'autre. C# compte de nombreux administrateurs et quelques-uns d'entre eux sont utilisés pour examiner les valeurs. Il s'agit d'une tâche exceptionnellement fondamentale lors de la programmation : vérifier comment au moins deux qualités s'identifient l'une à l'autre.

Syntaxe :

Public int compare(object s, object p)

Où,

S et p sont les premier et deuxième objets à comparer.

Il renvoie une valeur entière qui représente les valeurs des objets s et p.

Comment comparer des objets en C# ?

Nous voyons maintenant un exemple de la façon dont fonctionne la comparaison d'objets en C#.

Exemple n°1

using System;
using System.Collections.Generic;
class Someone
{
public string Name { get; set; }
}
class Ex
{
static void Main()
{
var someone = new List<Someone> {
new Someone { Name = "Spandana Rao" } };
Console.WriteLine(
someone.Contains(
new Someone { Name = "Spandana Rao" }));
}
}

Sortie :

Comparaison d'objets C#

Dans le programme ci-dessus, le programme produit une sortie false. Pour que cela soit vrai, nous devons effectuer un tri sans abroger la technique Equals ni exécuter la commande IEquatable interface, vous abandonnez l'autorité sur la manière dont deux exemples de votre type seront analysés et reconnaissez les systèmes de corrélation par défaut du CLR. Si votre type est un type de référence (une classe), vous obtiendrez un équilibre de caractères et si votre type est un type de valeur (une structure), vous obtiendrez un équilibre d'estime.

Au moment où vous regardez deux cas d'un type référence (comme le type Personne dans mon premier modèle), le CLR contrastera les références avec les éléments pour vérifier si les références mettent en évidence un article similaire. Deux types de référence peuvent être équivalents si leur référence se concentre sur un élément similaire sur la pile surveillée. Si les références sont uniques, les objets ne sont alors pas équivalents – même si leurs champs sont indiscernables.

L'égalité des valeurs C# est un cycle alternatif mais il est beaucoup plus simple à comprendre. L'uniformité des valeurs prend tous les champs d'occurrence d'un type de valeur et les considère comme les champs d'occasion d'un deuxième exemple dans une requête individuelle. J'imagine que l'équilibre de l'estime fonctionne en grande partie de la manière dont la plupart des concepteurs s'attendent à ce que tous les contrôles de correspondance le fassent.

Chaque fois que vous utilisez l'administrateur d'équité parallèle (==) ou la technique Equals sur un type de référence, vous invoquez un objet. Égal pour les occasions auxquelles il est fait référence. Dans le cas où vous souhaitez offrir un certain équilibre incitatif, l'activité la plus évidente consiste à remplacer System.Object.Equals et à utiliser cette technique pour réfléchir aux champs de vos deux occurrences. Cette méthodologie n’est pas de type sécurisé. Étant donné que la stratégie Equals reconnaît une contention de type Object, nous ne pouvons pas garantir que l'occurrence qui a été transmise à cette technique est une Personne.

Cette interface a été conçue explicitement pour nous aider à résoudre le type de problème de bien-être auquel nous sommes confrontés. Comme cela devrait être évident, cette interface nous permet de remplacer spécifiquement notre stratégie Equals actuelle. Étant donné que nous avons une stratégie spécifiquement Equals, tous les examens par correspondance effectués à deux reprises de notre type seront protégés par type et seront invalides. L'utilisation de as cast dans l'exécution remplacée par défaut d'Equals nous permet de transmettre soit une occasion de Personne soit invalide et notre utilisation de IEquatable. Equals renvoie un faux, ce qui garantit que nos stratégies ne échoueront pas en cas d'invalidité.

La stratégie GetHashCode est un élément de base des contrôles d'équité de la personnalité. Un code de hachage est une valeur fondamentale qui témoigne de l'état de l'exemple actuel. Essentiellement, si deux cas ont un code de hachage similaire, ils pourraient être équivalents en termes d'estime. Pourtant, si deux articles n’ont pas le même code de hachage, ils ne sont certainement pas équivalents en termes de valeur. Cette technique nous permet de prendre en compte le code et la prise en charge de l'exposition en n'appelant pas Equals si les codes de hachage ne se coordonnent pas. En ce qui concerne l'approche appropriée ou la plus idéale pour créer un code de hachage pour un exemple d'élément, il s'agit d'une conversation pendant un jour de plus. Tout ce que nous faisons ici, c'est prendre deux nombres premiers entre eux (23 et 37) et les utiliser pour contrôler les codes de hachage de l'état de notre occurrence afin qu'ils apparaissent à une dernière valeur essentielle. Une fois de plus, la façon dont l'utilisateur travaille n'a pas d'importance pour le moment, ce qui est important, c'est que nous donnons une certaine exécution afin de pouvoir recevoir les récompenses d'exposition que GetHashCode peut offrir. Actuellement, nous avons une classe qui offre de manière appropriée une sémantique de correspondance avantageuse.

Conclusion

Par conséquent, je voudrais conclure en affirmant que, depuis l'objet de base. La technique Equals est considérée comme virtuelle, vous pouvez la remplacer dans n'importe quelle classe issue d'Object, ce qui est bien, tout. Notez comment cela change la conséquence de p1.Equals(p3) puisqu'il examine actuellement le nom et l'âge plutôt que la référence.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Encodage d'URL C#Article suivant:Encodage d'URL C#