当我发现没有直接的方法对IList <T>进行排序或执行二进制搜索时,我感到非常惊讶.就像有一些静态方法来对数组进行排序和执行二进制搜索一样,我认为使用类似于IList <T>的静态方法会非常有用.
目前:
class Array
{
static Sort<T>(T[] array);
static int BinarySearch<T>(T[] array, T item);
}
Run Code Online (Sandbox Code Playgroud)
我希望他们会补充:
class List
{
static Sort<T>(IList<T> list);
static int BinarySearch<T>(IList<T> list, T item);
}
Run Code Online (Sandbox Code Playgroud)
我瞥了一眼.NET Framework 4.0 Beta SDK,但似乎仍然没有解决这个问题的方法.
我知道我可以通过创建一个扩展方法来解决这个问题,该方法检查它是否是List <T>然后使用List <T>实例进行排序/搜索; 但是,如果它不是List <T>的实例,那么我必须执行一个副本(对于非常大的列表很臭).我知道我可以做到这一切,但为什么呢?他们故意遗漏这个功能有什么理由吗?
为了尝试在.NET 4.0 Framework中实现这一点,我通过Microsoft的Connect程序创建了一个建议.如果你像我这样对这个问题感到沮丧,那就投票吧,也许它会被添加.
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=474201
没有任何Sort()功能IList.someoene可以帮我这个吗?我想对自己的IList进行排序.
假设这是我的IList:
public class MyObject()
{
public int number { get; set; }
public string marker { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如何使用标记字符串对myobj进行排序?
public void SortObject()
{
IList<MyObject> myobj = new List<MyObject>();
}
Run Code Online (Sandbox Code Playgroud) 我们正在尝试将.NET 3.5内置的应用程序移动到2.0(因为我们的exe运行在XP等没有3.5的旧机器上)
在这样做的同时,现在一切都停留在一个主要问题上用旧式代理替换Func(因为Func在2.0上不可用).要替换的代码是这样的.
private Func<object, string> someName1;
private static Func<object, string> someName2;
internal Func<object, string> someProperty
{
get { return someName1?? (someName1= someName2); }
set { someName1= value; }
}
Run Code Online (Sandbox Code Playgroud)
有些人可以帮助我创建'someProperty',只需使用代表.提前致谢.