当我试图从Jon的书“深度C#”中修改清单3.4时,我得到了以下错误消息.
类型'list_3_4.Dog‘不能用作泛型类型或方法'list_3_4.Program.CompareToDefault(T)’中的类型参数'T‘。没有从'list_3_4.Dog‘到’System.I比较‘的隐式引用转换。
这是我的密码。
using System;
namespace list_3_4
{
class Program
{
static void Main(string[] args)
{
//string mystring;
Dog d = new Dog("howie");
Console.WriteLine(CompareToDefault("x"));
Console.WriteLine(CompareToDefault(10));
Console.WriteLine(CompareToDefault(0));
Console.WriteLine(CompareToDefault(-10));
Console.WriteLine(CompareToDefault(DateTime.MinValue));
Console.WriteLine(CompareToDefault(d));
Console.ReadKey();
}
static int CompareToDefault<T> (T value) where T: IComparable<T>
{
return value.CompareTo(default(T));
}
}
public class Dog
{
private string _name;
public Dog(string name)
{
_name = name;
}
}
}如何添加像"Dog“这样的引用类型来处理Jon代码清单?我知道Dog需要实现IComparable,但我不知道如何实现!
发布于 2012-10-05 14:20:20
您的Dog类应该实现IComparable。
public class Dog: IComparable<Dog>
{
private string _name;
public Dog(string name)
{
_name = name;
}
public int CompareTo( Dog other )
{
if (other == null)
return 1;
return string.Compare( _name, other._name );
}
}https://stackoverflow.com/questions/12748232
复制相似问题