尝试用 C# 编写我的第一个泛型类:
public class HighScoreList<ScoreType>
where ScoreType : System.IComparable<ScoreType>
{
...
public HighScoreList(List<ScoreType> highScoreList)
{
....
}
...
}
我在为它编写单元测试时遇到了问题。由于某种原因它不能匹配构造函数的参数列表并给我错误:
错误 7 'TDGLX.FileManagement.HighScoreList.HighScoreList(System.Collections.Generic.List)' 的最佳重载方法匹配有一些无效参数 C:\Users\eric\Documents\Visual Studio 2010\Projects\TDGLX\UnitTests\FileManagmentTest\HighScoreListTest.cs 183 54 单元测试
关于这个和其他几个测试:
HighScoreList<GenericScore> highScoreList =
new HighScoreList<GenericScore>(new List<GenericScore>()
{
new GenericScore("Person1",400),
new GenericScore("Person2",200),
new GenericScore("Person3",100)
});
HighScoreList<GenericScore> target =
new HighScoreList<GenericScore>(highScoreList);
这是我在测试中用作模板参数列表参数的类。
[Serializable()]
public class GenericScore : System.IComparable<GenericScore>
{
public GenericScore(string name,int score)
{
Name = name;
Score = score;
}
public string Name { get; set; }
public int Score { get; set; }
public int CompareTo(GenericScore other)
{
return this.Score.CompareTo(other.Score);
}
}
我实在想不通测试有什么问题。是否对 C# 泛型存在误解?
最佳答案
HighScoreList<GenericScore> target =
new HighScoreList<GenericScore>(highScoreList);
在上面的代码中,您传递了一个 HighScoreList<GenericScore>
到 HighScoreList<GenericScore>
的构造函数, 但它期望一个 List<GenericScore>
这不是你想要的吗?
List<GenericScore> highScoreList = new List<GenericScore>()
{
new GenericScore("Person1",400),
new GenericScore("Person2",200),
new GenericScore("Person3",100)
};
HighScoreList<GenericScore> target =
new HighScoreList<GenericScore>(highScoreList);
关于c# - 通用类无法匹配参数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4073285/