racercomparer.cs

来自「C#高级编程第6版随书源代码 值得下载」· CS 代码 · 共 50 行

CS
50
字号
using System;
using System.Collections.Generic;
using System.Text;

namespace Wrox.ProCSharp.Collections
{
   public class RacerComparer : IComparer<Racer>
   {
      public enum CompareType
      {
         FirstName,
         LastName,
         Country,
         Wins
      }

      private CompareType compareType;
      public RacerComparer(CompareType compareType)
      {
         this.compareType = compareType;
      }

      public int Compare(Racer x, Racer y)
      {
         if (x == null) throw new ArgumentNullException("x");
         if (y == null) throw new ArgumentNullException("y");    

         int result;
         switch (compareType)
         {
            case CompareType.FirstName:
               return x.FirstName.CompareTo(y.FirstName);
            case CompareType.LastName:
               return x.LastName.CompareTo(y.LastName);
            case CompareType.Country:
               if ((result = x.Country.CompareTo(y.Country)) == 0)
                  return x.LastName.CompareTo(y.LastName);
               else
                  return result;
            case CompareType.Wins:
               return x.Wins.CompareTo(y.Wins);
            default:
               throw new ArgumentException("Invalid Compare Type");
         }

      }
   }

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?