最近在学习泛型,遇到可访问性不一致的问题,网上说是加public 但在duck类前加不能通过,求解释~
可访问性不一致: 参数类型“System.Collections.Generic.List<ConsoleApplication2.Program.Duck>”比方法“ConsoleApplication2.Program.PrintDuck(System.Collections.Generic.List<ConsoleApplication2.Program.Duck>)”的可访问性低   class Program
    {
        enum KindOfDuck
        {
            Mallard,
            Muscovy,
            Decoy,
        };
      
       class Duck : IComparable<Duck>
        {
       
            public int Size;
            public KindOfDuck Kind;            public int CompareTo(Duck duckToCompare)
            {
                if (this.Size > duckToCompare.Size)
                {
                    return 1;
                }
                else if (this.Size < duckToCompare.Size)
                {
                    return -1;
                }
                else
                    return 0;
            }        }
     class DuckBySize : IComparer<Duck>
        {            public int Compare(Duck x, Duck y)
            {
                if (x.Size > y.Size)
                {
                    return 1;
                }
                if (x.Size < y.Size)
                {
                    return -1;
                }                return 0;            }
        }
        public static void PrintDuck(List<Duck> ducks)
        {
            foreach (Duck duck in ducks)
            {
                Console.WriteLine("there is duck {0},{1}", duck.Kind.ToString(), duck.Size.ToString());
            }
        }
        static void Main(string[] args)
        {
            List<Duck> ducks = new List<Duck>
            {
                new Duck() { Kind = KindOfDuck.Mallard, Size = 17 },
    new Duck() { Kind = KindOfDuck.Muscovy, Size = 18 },
    new Duck() { Kind = KindOfDuck.Decoy, Size = 14 },
    new Duck() { Kind = KindOfDuck.Muscovy, Size = 11 },
    new Duck() { Kind = KindOfDuck.Mallard, Size = 14 },
    new Duck() { Kind = KindOfDuck.Decoy, Size = 13 },
            };            DuckBySize p = new DuckBySize();
            ducks.Sort(p);
            PrintDuck(ducks);
        }
    }
}

解决方案 »

  1.   

    //将此处的public去掉
    public static void PrintDuck(List<Duck> ducks)
    {
        foreach (Duck duck in ducks)
        {
              Console.WriteLine("there is duck {0},{1}", duck.Kind.ToString(), duck.Size.ToString());
        }
    }
      

  2.   

     这里加 public   enum KindOfDuck
            {
                Mallard,
                Muscovy,
                Decoy,
            };  这里加 public class Duck : IComparable<Duck>
            {            public int Size;
                public KindOfDuck Kind;            public int CompareTo(Duck duckToCompare)
                {
                    if (this.Size > duckToCompare.Size)
                    {
                        return 1;
                    }
                    else if (this.Size < duckToCompare.Size)
                    {
                        return -1;
                    }
                    else
                        return 0;
                }        }