gpt4 book ai didi

c# - 构造函数中的 SortedSet 和匿名 IComparer 不起作用

转载 作者:IT王子 更新时间:2023-10-29 04:52:05 25 4
gpt4 key购买 nike

为什么匿名函数可以作为方法的参数,而不是构造函数的参数?


如果我创建一个 List<string> ,它有一个带有以下签名的排序方法:

public void Sort(IComparer<T> comparer)

以下工作的地方:

List<string> list = new List<string>();
list.Sort( (a,b) => a.CompareTo(b) );

SortedSet 有一个具有类似签名的构造函数:

public SortedSet(IComparer<T> comparer)

但是在构造函数中使用匿名函数时会失败。以下内容无效:

SortedSet<string> set = new SortedSet<string>( (a, b) => a.CompareTo(b) );

创建排序类按预期正常工作:

public class MyComparer : IComparer<string>
{
public int Compare(string a, string b)
{ return a.CompareTo(b); }
}

SortedSet<string> set = new SortedSet<string>( new MyComparer() );

最佳答案

.NET Framework 4.5 版本引入了工厂方法 Comparer<T>.Create :

var set = new SortedSet<string>(
Comparer<string>.Create((a, b) => a.CompareTo(b)));

关于c# - 构造函数中的 SortedSet<T> 和匿名 IComparer<T> 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3130922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com