当我尝试调整Jon Skeet的书“C# in depth”中第3.4节的示例代码时,出现以下错误信息:
类型“list_3_4.Dog”不能作为泛型类型或方法“list_3_4.Program.CompareToDefault(T)” 中类型参数“T”的使用。无法将“list_3_4.Dog”隐式转换为“System.IComparable”。
以下是我的代码...
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;
}
}
}
我如何像Jon Skeet的示例代码一样添加一个"Dog"引用类型? 我知道Dog需要实现IComparable,但我不知道怎么做!
Dog
类似乎没有按照泛型约束where T : IComparable<T>
指定的方式实现IComparable<Dog>
接口。 - Adam Houldsworthdefault(T)
默认为null
,所以你可以直接测试是否为null
:if (d == null)
。 - Adam Houldsworth