请教高手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");
}
}
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>
语法不对。。。
要么:
class MyClass : IComparable
要么
class MyClass : IComparable<T>, IEquatable<T>
作者: fangxinggood 发布时间: 2011-12-11
谢谢大侠指教,懂了。
作者: cowboy227655 发布时间: 2011-12-11
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28