【发布时间】:2014-07-24 11:16:28
【问题描述】:
我遇到了代表未授权的问题... 我有一个名为 Tweet 的对象,它有一个字符串文本和一个 int 分数。我想按分数的顺序对推文对象数组(twtArray)进行排序。 这是我的代码:
Array.Sort(twtArray, delegate(Tweet twt1, Tweet twt2)
{
return twt1.score.CompareTo(twt2.score); //(twt1.score - twt2.score)
});
它抛出:
System.NullReferenceException:对象引用未设置为对象的实例。 在 System.Array.FunctorComparer`1.Compare(T x, T y)
在调试时,我注意到第一个比较有效,但在第二个比较中,twt2 为空。它不能为空,因为我在数组中肯定有 8 个元素。
我也尝试过反转twt1 和twt2,但没有区别。
我也尝试在 Tweet 类中创建自己的比较方法,但同样的事情。
任何帮助将不胜感激!
另外,我不认为这是这个问题的重复:List.Sort in C#: comparer being called with null object 因为我尝试了所有可能的解决方案,但它不起作用。我也在谷歌上搜索了很多:(
【问题讨论】:
-
即使您有一个包含 8 个元素的
Tweet[],它们也可以为空:Tweet[] twtArray = new Tweet[8]; -
我的意思是 Tweet[] 的大小为 20,我可以看到在我的代码的第一行中有 8 个 Tweet 对象(具有正确的文本和分值)。
标签: c# delegates comparison nullreferenceexception