c#中的运算符重载

来源:互联网 发布:数据挖掘 算法和原理 编辑:程序博客网 时间:2024/05/21 21:50
    1. using System;
    2. using System.Collections.Generic;
    3. using System.Text;
    4. namespace CountStrDemo
    5. {
    6.     class 比较运算符重载
    7.     {
    8.         public static void Main(string[] args)
    9.         { 
    10.             // 比较预算符有6个,3对 分别是:
    11.             // ==  !=
    12.             // >  <
    13.             // >= <=
    14.             //成对重载,例如,重载了 == 则必须重载 != 反回类型必须是bool
    15.         }
    16.         class MyVectorForEq
    17.         {
    18.             public int x;
    19.             public int y;
    20.             public MyVectorForEq( int x , int y )
    21.             {
    22.                 this.x = x;
    23.                 this.y = y;
    24.             }
    25.             //重载==运算符 同时必须成对重载 !=
    26.             public static bool operator == ( MyVectorForEq lobj , MyVectorForEq robj )
    27.             {
    28.                 //这里只是做了成员值的比较,ms推荐重写Equals方法与配合hash来进行对象内容的比较
    29.                 if (lobj.x == robj.x && lobj.y == robj.y)
    30.                 {
    31.                     return true;
    32.                 }
    33.                 else
    34.                 {
    35.                     return false;
    36.                 }
    37.             }
    38.             public static bool operator !=( MyVectorForEq lobj , MyVectorForEq robj)
    39.             {
    40.                 if (lobj.x == robj.x && lobj.y == robj.y)
    41.                 {
    42.                     return false;
    43.                 }
    44.                 else
    45.                 {
    46.                     return true;
    47.                 }
    48.             }
    49.         }
    50.     }
    51. }
    using
     System;
  1. using System.Collections.Generic;
  2. using System.Text;
  3. namespace CountStrDemo
  4. {
  5.     class 运算浮重载
  6.     {
  7.         public static void Main(string[] args)
  8.         {
  9.             Vector vec1 = new Vector( 5 , 6 , 7 );
  10.             Vector vec2 = new Vector( 2 , 2 , 2 );
  11.             Vector revec = vec1 + vec2;
  12.             Console.WriteLine( "x={0} y={1} z={2}" , revec.x , revec.y , revec.z );
  13.             Console.Read();
  14.         }
  15.     }
  16.     class Vector
  17.     {
  18.         public int x;
  19.         public int y;
  20.         public int z;
  21.         public Vector( int x , int y  , int z )
  22.         {
  23.             this.x = x;
  24.             this.y = y;
  25.             this.z = z;
  26.         }
  27.         public Vector(Vector vec)
  28.         {
  29.             this.x = vec.x;
  30.             this.y = vec.y;
  31.             this.z = vec.z;
  32.         }
  33.         //定义重载 , 和方法类似,不过必须是public static ...可以记做没有方法名,呵呵operator + 指重载+号运算
  34.         public static Vector operator + ( Vector lvec , Vector rvec )
  35.         {
  36.             Vector revec = new Vector( lvec );
  37.             revec.x += rvec.x;
  38.             revec.y += rvec.y;
  39.             revec.z += rvec.z;
  40.             return revec;
  41.         }
  42.     }
  43. }

 

-------------------------------------------------------------------------------------------------