Avatar ·

Différence entre == et === en C#

Bonjour à tous ! Je suis débutant en C# (j'écrivais auparavant en JavaScript) et j'ai rencontré une incompréhension des opérateurs de comparaison. En JS, il y a la comparaison stricte === et la comparaison non stricte ==. En C#, je ne vois que ==, mais j'ai entendu dire qu'il y a Equals() et ReferenceEquals(). Cependant, je ne trouve pas d'information sur === — il n'existe tout simplement pas ? Ou est-ce une syntaxe que j'ai manquée ?

J'ai essayé le code suivant :

int a = 5;
int b = 5;
object objA = a;
object objB = b;

Console.WriteLine(a == b);          // True
Console.WriteLine(objA == objB);    // False (comparaison de références ?)
Console.WriteLine(objA.Equals(objB)); // True (comparaison de valeurs ?)

Je m'attendais à ce que objA == objB donne True, mais j'ai obtenu False. Quelle est la différence entre == pour les types valeur et les types référence ? Existe-t-il en C# un équivalent de === de JS pour une comparaison stricte sans boxing ? Ou faut-il toujours utiliser