Csharp/CSharp Tutorial/struct/Equals

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Value type equality (default behavior)

<source lang="csharp">using System; using System.Collections.Generic; using System.Globalization; using System.IO; using System.Text; using System.Security.Cryptography; struct Car {

   public string Make;
   public string Model;
   public uint Year;
   public Car(string make, string model, uint year)
   {
       Make = make;
       Model = model;
       Year = year;
   }

} public class MainClass {

   public static void Main()
   {
       Car c1 = new Car("BMW", "330Ci", 2001);
       Car c2 = new Car("BMW", "330Ci", 2001);
       Console.WriteLine(c1.Equals(c2)); // Prints "true"
   }

}</source>

True

Value type equality (override)

<source lang="csharp">using System; using System.Collections.Generic; using System.Globalization; using System.IO; using System.Text; using System.Security.Cryptography; struct Car {

   public string Make;
   public string Model;
   public uint Year;
   public Car(string make, string model, uint year)
   {
       Make = make;
       Model = model;
       Year = year;
   }
   public bool Equals(Car c)
   {
       return c.Make == this.Make &&
           c.Model == this.Model &&
           c.Year == this.Year;
   }
   public override bool Equals(object obj)
   {
       if (obj is Car)
           return Equals((Car)obj);
       return false;
   }

} public class MainClass {

   public static void Main()
   {
       Car c1 = new Car("A", "4", 2005);
       Car c2 = new Car("A", "4", 2005);
       Console.WriteLine(c1.Equals(c2)); // Prints "true"
   }

}</source>

True