+ -
当前位置:首页 → 问答吧 → 请教高手C#,报错IComparable接口成员无法实现,但IEquatbale 成员可以,不知为何?已重写GetHashCode

请教高手C#,报错IComparable接口成员无法实现,但IEquatbale 成员可以,不知为何?已重写GetHashCode

时间:2011-12-11

来源:互联网

using System;


class MyClass : IComparable<MyClass>, IEquatable<MyClass> {
  public int val;
  public MyClass(int v) { val = v; }

  public int compareTo(MyClass otherValue) {
  return val - otherValue.val;
  }
  public bool Equals(MyClass otherValue) {
  return val == otherValue.val;
  }
  public override bool Equals(object obj)
  {
  if(obj is MyClass)
  return Equals((MyClass) obj);
  return false;
  }

  public override int GetHashCode()
  {
   
  return val.GetHashCode();
  }
}

class Demo {
  public static bool IsIn<T>(T what, T[] obs) where T : IEquatable<T> {
  foreach (T v in obs) if (v.Equals(what)) return true;
  return false;
  }  
  public static bool Inrange<T>(T what, T[]obs)where T: IComparable<T>{
  if (what.CompareTo(obs[0]) < 0 || what.CompareTo(obs[obs.Length - 1]) > 0) return false; return true;
  }
  static void Main() {
  int[] mums = { 1, 2, 3, 4, 5 };
  if (IsIn(2, mums)) Console.WriteLine("2 is found");

  if (Inrange(2, mums)) Console.WriteLine("2 is in range");

  
  }
}

作者: cowboy227655   发布时间: 2011-12-11

class MyClass : IComparable<MyClass>, IEquatable<MyClass>

语法不对。。。

要么:

class MyClass : IComparable

要么

class MyClass : IComparable<T>, IEquatable<T>

作者: fangxinggood   发布时间: 2011-12-11

谢谢大侠指教,懂了。

作者: cowboy227655   发布时间: 2011-12-11

相关阅读 更多