读书人

关于IComparable接口的一个有关问题

发布时间: 2013-11-21 23:38:25 作者: rapoo

关于IComparable接口的一个问题
namespace IComparable接口
{
//声明一个接口
public interface IComparable
{
int CompareTo(object obj);
}

//声明一个实现接口的类
class MyClass : IComparable
{
//声明一个公有的字段成员
public int TheValue;
//实现接口中方法成员
public int CompareTo(object obj)
{
//将接口类型的变量的引用强制转换为MyClass类型
MyClass mc = (MyClass)obj;
if (this.TheValue < mc.TheValue) return -1;
if (this.TheValue > mc.TheValue) return 1;
return 0;
}
}
class Program
{
//声明一个方法,用于输出原始数组和排序后的数组
static void PrintOut(string s, MyClass[] mc)
{
Console.Write(s);
//遍历输出数组中的元素
foreach (var m in mc)
Console.Write("{0}", m.TheValue);
Console.WriteLine("");
}
static void Main( )
{
//声明并初始化数组
var myInt = new[] { 20, 4, 16, 9, 2 };
//创建Myclass对象的数组
MyClass[] mcArr = new MyClass[5];
for (int i = 0; i < 5; i++)
{
mcArr[i] = new MyClass();
mcArr[i].TheValue = myInt[i];
}
PrintOut("Initial Order: ",mcArr);
Array.Sort(mcArr);
PrintOut("Initial Order: ",mcArr);
Console.ReadKey();
}
}
}
刚开始自学接口,照着书上的例子把这个代码敲上了,但是系统显示以上红色字体错误,提示“未能比较数组中的两个元素”。这段代码到底错在了什么地方?应该怎样改正? 我是初学者,还请各位帮帮忙,说详细点,谢谢
[解决办法]
不要声明接口,你画蛇添足了。

读书人网 >C#

热点推荐