rip*_*234 10 .net c# algorithm
我喜欢类似的东西
int minIndex = list.FindMin(delegate (MyClass a, MyClass b) {returns a.CompareTo(b);});
Run Code Online (Sandbox Code Playgroud)
在.NET中有没有内置的方法来做到这一点?
Nic*_*uso 20
试着看看这些:
只要你的类实现IComparable,你所要做的就是:
List<MyClass> list = new List();
//add whatever you need to add
MyClass min = list.Min();
MyClass max = list.Max();
Run Code Online (Sandbox Code Playgroud)
Rya*_*ndy 10
好吧,如果你不能使用.NET 3.5,你总是可以对列表进行排序,然后返回列表[0].它可能不是最快的方式,但它可能是最短的代码,特别是如果你的类已经实现了IComparable.
List<SomeClass> list = new List<SomeClass>();
// populate the list
// assume that SomeClass implements IComparable
list.Sort();
return list[0]; // min, or
return list[list.Count - 1]; // max
Run Code Online (Sandbox Code Playgroud)
当然,这也假设如果您有多个最小或最大的项目,则返回哪个项目无关紧要.
如果您的类没有实现IComparable,您可以传入一个匿名委托,如下所示:
list.Sort(delegate(SomeClass x, SomeClass y) { return string.Compare(x.Name, y.Name); });
Run Code Online (Sandbox Code Playgroud)