Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

วิธีใช้ตัวดำเนินการ Take และ Skip ร่วมกันใน LINQ C# Programming


เรากำลังสร้างอินสแตนซ์ของคลาส Employee สองอินสแตนซ์ e และ e1 e ถูกกำหนด toe1 อ็อบเจ็กต์ทั้งสองชี้ไปที่การอ้างอิงเดียวกัน ดังนั้นเราจะได้เอาต์พุตที่คาดหวังจริงสำหรับ Equals ทั้งหมด

ในกรณีที่สอง เราสามารถสังเกตได้ว่า แม้ว่าค่าคุณสมบัติจะเหมือนกัน Equals คืนค่าเท็จ โดยพื้นฐานแล้ว เมื่ออาร์กิวเมนต์อ้างถึงอ็อบเจกต์ต่างๆ ค่าเท่ากันจะไม่ตรวจสอบค่าและคืนค่าเป็นเท็จเสมอ

ตัวอย่างที่ 1

class Program{
   static void Main(string[] args){
      Employee e = new Employee();
      e.Name = "Test";
      e.Age = 27;
      Employee e2 = new Employee();
      e2 = e;
      var valueEqual = e.Equals(e2);
      Console.WriteLine(valueEqual);
      //2nd Case
      Employee e1 = new Employee();
      e1.Name = "Test";
      e1.Age = 27;
      var valueEqual1 = e.Equals(e1);
      Console.WriteLine(valueEqual1);
      Console.ReadLine();
   }
}
class Employee{
   public int Age { get; set; }
   public string Name { get; set; }
}

ผลลัพธ์

True
False

ตัวอย่างที่ 2

class Program{
   static void Main(string[] args){
      Employee e = new Employee();
      e.Name = "Test";
      e.Age = 27;
      Employee e2 = new Employee();
      e2 = e;
      var valueEqual = e.Equals(e2);
      Console.WriteLine(valueEqual);
      Employee e1 = new Employee();
      e1.Name = "Test";
      e1.Age = 27;
      var valueEqual1 = e.Equals(e1);
      Console.WriteLine(valueEqual1);
      Console.ReadLine();
   }
}
class Employee{
   public int Age { get; set; }
   public string Name { get; set; }
   public override bool Equals(object? obj){
      if (obj == null)
      return false;
      if (this.GetType() != obj.GetType()) return false;
      Employee p = (Employee)obj;
      return (this.Age == p.Age) && (this.Name == p.Name);
   }
   public override int GetHashCode(){
      return Age.GetHashCode() ^ Name.GetHashCode();
   }
}

ผลลัพธ์

True
True