首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现IComparable<T>

实现IComparable<T>
EN

Stack Overflow用户
提问于 2012-10-05 14:16:36
回答 1查看 8.5K关注 0票数 6

当我试图从Jon的书“深度C#”中修改清单3.4时,我得到了以下错误消息.

类型'list_3_4.Dog‘不能用作泛型类型或方法'list_3_4.Program.CompareToDefault(T)’中的类型参数'T‘。没有从'list_3_4.Dog‘到’System.I比较‘的隐式引用转换。

这是我的密码。

代码语言:javascript
复制
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,但我不知道如何实现!

EN

回答 1

Stack Overflow用户

发布于 2012-10-05 14:20:20

您的Dog类应该实现IComparable

代码语言:javascript
复制
 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 );
      }
 }
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12748232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档