At least one object must implement IComparable

后端 未结 5 381
攒了一身酷
攒了一身酷 2020-12-06 08:48
using System;
using System.Xml;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
             


        
5条回答
  •  长情又很酷
    2020-12-06 09:38

    Well, you're trying to use SortedSet<>... which means you care about the ordering. But by the sounds of it your Player type doesn't implement IComparable. So what sort order would you expect to see?

    Basically, you need to tell your Player code how to compare one player with another. Alternatively, you could implement IComparer somewhere else, and pass that comparison into the constructor of SortedSet<> to indicate what order you want the players in. For example, you could have:

    public class PlayerNameComparer : IComparer
    {
        public int Compare(Player x, Player y)
        {
            // TODO: Handle x or y being null, or them not having names
            return x.Name.CompareTo(y.Name);
        }
    }
    

    Then:

    // Note name change to follow conventions, and also to remove the
    // implication that it's a list when it's actually a set...
    SortedSet players = new SortedSet(new PlayerNameComparer());
    

提交回复
热议问题