C#重载==和!=

class A

{

  public int P1 { get; set; }

  public int P2 { get; set; }

  public static bool operator !=(A a1, A a2)
  {
    return !a1.Equals(a2);
  }

  public static bool operator ==(A a1, A a2)
  {
    return a1.Equals(a2);
  }  

  

  public override bool Equals(object obj)
  {
    // If parameter is null return false.
    if(obj == null)
    {
      return false;
    }  

    // If parameter cannot be cast to Settings return false.
            A a2 = obj as A;
    if((System.Object)a2 == null)
    {
      return false;
    }

    // Return true if the fields match:
    if (P1 != a2.P1 || P2 != a2.P2)
      return false;
    else
      return true;
     }

  public override int GetHashCode()
  {
    return P1;
  }

}

时间: 2024-10-07 01:29:22

C#重载==和!=的相关文章

C++运算符重载——输入/输出运算符

为了与IO标准库一致,重载输入输出运算符函数的第一个行参应该是流的引用,第二个行参是对象的引用. 如果重载为类的成员函数,第一个行参应该是对象的引用,第二个行参是流的引用. 使用方式是 ClassObj << cout 这样与标准IO库就不一致了,所以输入输出运算符不能重载为类的成员函数,可以重载为类的友元函数和普通函数. 通常重载输出运算符的第二个行参是const的,因为输出一个类不许要更改它: 但是重载输入运算符的第二个行参必须是非const的,否则无法赋值. 重载的基本方法如下: //重

C++学习28 重载&gt;&gt;和&lt;&lt;(输入输出运算符)

在C++中,系统已经对左移运算符“<<”和右移运算符“>>”分别进行了重载,使其能够用于输入输出,但是输入输出的处理对象只能是系统内建的数据类型.系统重载这两个运算符是以系统类成员函数的形式进行的,因此cout<< var语句可以理解为: cout.operator<<( var ) 如果我们自己定义了一种新的数据类型,需要用输入输出运算符去处理,那么就要重载.本节以前面的 complex 类为例说明输入输出运算符的重载. 重载输入运算符>> 下

C++重载&gt;&gt;和&lt;&lt;(输入输出运算符)

在C++中,标准库本身已经对左移运算符<<和右移运算符>>分别进行了重载,使其能够用于不同数据的输入输出,但是输入输出的对象只能是 C++ 内置的数据类型(例如 bool.int.double 等)和标准库所包含的类类型(例如 string.complex.ofstream.ifstream 等). 如果我们自己定义了一种新的数据类型,需要用输入输出运算符去处理,那么就必须对它们进行重载.本节以前面的 complex 类为例来演示输入输出运算符的重载. 重载输入运算符>>

输入输出运算符重载

C++能够使用流提取运算符>>和流插入运算符<< 来输入输出内置数据类型,也可以重载流提取运算符和流插入运算符来操作对象等用户自定义的数据类型. 我们有时需要把运算符重载函数声明为类的友元函数,这样我们就能不用构造对象而直接调用函数. /*** inputOver.cpp ***/ #include<iostream> using namespace std; class Distance { private: int feet; int inches; public:

C++重载流插入运算符和流提取运算符

C++的流插入运算符“<<”和流提取运算符“>>”是C++在类库中提供的,所有C++编译系统都在类库中提供输入流类istream和输出流类ostream.cin和cout分别是istream类和ostream类的对象.在类库提供的头文件中已经对“<<”和“>>”进行了重载,使之作为流插入运算符和流提取运算符,能用来输出和输入C++标准类型的数据.因此,凡是用“cout<<”和“cin>>”对标准类型数据进行输入输出的,都要用#incl

C++中不可重载5个运算符

C++中不可重载的5个运算符 C++中的大部分运算符都是可以重载的,只有以下5个运算符不可以重载,他们是: 1  .(点运算符)通常用于去对象的成员,但是->(箭头运算符),是可以重载的 2  ::(域运算符)即类名+域运算符,取成员,不可以重载 3  .*(点星运算符,)不可以重载,成员指针运算符".*,即成员是指针类型 4  ?:(条件运算符)不可以重载 5  sizeof不可以重载

网易云课堂_C++程序设计入门(下)_第8单元:年年岁岁花相似– 运算符重载_第8单元 - 作业2:OJ编程 - 重载数组下标运算符

第8单元 - 作业2:OJ编程 - 重载数组下标运算符 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩. 练习数组下标运算符重载 依照学术诚信条款,我保证此作业是本人独立完成的. 1 练习数组下标运算符重载(6分) 本题目具体内容请参见 [第8单元 - 单元作业2说明] 时间限制:500ms内存限制:32000kb #include <iostream> #in

C++ Primer 学习笔记_27_操作符重载与转换(2)--++/--运算符重载、!运算符重载、赋值运算符重载 、String类([]、 +、 += 运算符重载)、&gt;&gt;和&lt;&lt;运算符重载

C++ Primer 学习笔记_27_操作符重载与转换(2)--++/--运算符重载.!运算符重载.赋值运算符重载 .String类([]. +. += 运算符重载).>>和<<运算符重载 一.++/--运算符重载 1.前置++运算符重载 成员函数的方式重载,原型为: 函数类型 & operator++(); 友元函数的方式重载,原型为: friend 函数类型 & operator++(类类型 &); 2.后置++运算符重载 成员函数的方式重载,原型为:

C++重载自增运算符的效率问题

C++规定后缀形式有一个int类型参数,当函数被调用时,编译器传递一个0做为int参数的值给该函数. increment的前缀形式表示“增加然后取回”,后缀形式表示“取回然后增加”. 1 #include "stdafx.h" 2 #include "assert.h" 3 class A 4 { 5 public: 6 A(int i) 7 :m_i(i) 8 { 9 } 10 // ++i 11 A& operator++() 12 { 13 ++m_i

people为基类,student和graduate为子类,重载“==”运算符

//people为基类,student和graduate为子类,重载“==”运算符 //输入2个学生的信息:姓名.编号.身份证号.班级.专业 //输入1个研究生的信息:姓名.编号.身份证号.班级.专业.导师 //重载“==”,当两个学生的编号相同时,调用重载运算符,输出错误信息 源代码如下: #include <iostream>#include <string>using namespace std;//定义基类class People { public: //成员变量:姓名,编