【发布时间】:2016-11-20 14:51:06
【问题描述】:
我有一个名为 globals.cs 的脚本,我在其中存储从其他脚本访问的全局变量。我在那里定义了以下类:
public static class business {
static List<businessVal> _list;
static business() {_list = new List<businessVal>();}
public static void Add (businessVal value) {_list.Add(value);}
public static IEnumerable<businessVal> Get () {return _list;}
public static businessVal GetItem (string name) {return _list.SingleOrDefault(li => li.name.Equals(name));}
}
public class businessVal {
public string name {get; set;}
public int income {get; set;}
}
我可以将项目添加到列表中并从其他脚本返回完整列表。我想做的是能够在遍历列表元素之前按name 或income 对列表进行排序。
我尝试向类添加排序函数,如下所示,但在使用 IComparable 时收到错误消息,提示我无法在静态类上实现接口。这样做的最佳方式是什么?
public static class business: IComparable {
// ...
public int CompareTo(businessVal tag) {
return businessVal.income.CompareTo(tag.income);
}
}
【问题讨论】:
-
除此之外,我强烈建议您开始遵循 .NET 命名约定。我也会尽量远离静态变量。
-
您无法精确比较两个静态类的实例,因为您无法创建静态类的实例。您甚至无法将此类的实例添加到列表中,正是因为您无法创建它的实例。静态类如何参与列表和排序?你能详细说明一下吗?