用IComparable和IComparable<T>接口实现两个类对象的比较大小.
1.IComparable接口
namespace System
{
public interface IComparable
{
//Less than zero This instance is less than obj.
//Zero This instance is equal to obj.
//Greater than zero This instance is greater than obj.
int CompareTo(object obj);
}
}
2.一个example
namespace ConsoleApplicationCompare
{
class Program
{
static void Main(string[] args)
{
Student s1 = new Student();
Student s2 = new Student();
s1.Name = "张三";
s2.Name = "张三";
s1.Score = 112;
s2.Score = 211;
Console.WriteLine(((IComparable)s1).CompareTo(s2));
Console.ReadKey();
}
}
public class Student: IComparable
{
public string Name { set; get; }
public int Score { set; get; }
public int CompareTo(object obj)
{
int result = 0;
Student o = (Student)obj;
if (this.Score > o.Score)
result = 1;
else if (this.Score == o.Score)
result = 0;
else
result = -1;
return result;
}
}
}
3.IComparable<T>接口
namespace System
{
// Type parameters: T: The type of objects to compare. That is, you can use either the type you specified or any type that is less derived.
public interface IComparable<in T>
{
int CompareTo(T other);
}
}
4. example 第二版
namespace ConsoleApplicationCompareT
{
class Program
{
static void Main(string[] args)
{
Student s1 = new Student();
Student s2 = new Student();
s1.Name = "张三";
s2.Name = "张三";
s1.Score = 112;
s2.Score = 211;
Console.WriteLine(s1.CompareTo(s2));
Console.ReadKey();
}
}
public class Student : IComparable<Student>
{
public string Name { set; get; }
public int Score { set; get; }
public int CompareTo(Student obj)
{
int result = 0;
if (this.Score > obj.Score)
result = 1;
else if (this.Score == obj.Score)
result = 0;
else
result = -1;
return result;
}
}
}
5.结论
泛型接口更好用, it's obvious.
邮箱:lzd_ren@hotmail.com
出处:http://www.cnblogs.com/liuzhendong
本文版权归作者所有,欢迎转载,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。