gpt4 book ai didi

c# - 带参数的自定义 Icomparer

转载 作者:行者123 更新时间:2023-11-30 13:12:52 27 4
gpt4 key购买 nike

如何实现需要参数的 IComparer(可能不相关,但我在 Linq 查询中使用它)?

我想它应该这样称呼:

ListOfObjectsToSort.orderBy(x => x, myCustomComparer(argument));

这是我在如何实现 IComparer 时发现的,但我不知道如何更改它以在此处传递参数:

public class MyComparer : IComparer<object>
{
public int Compare(object x, object y)
{
// code will then return 1,-1 or 0

最佳答案

您不能向Compare 方法添加参数,否则您违反了接口(interface)协定。向类中添加一个可以在方法中使用的属性:

public class MyComparer : IComparer<object>
{
public int MyArgument {get; set;}
public int Compare(object x, object y)
{
// code will then return 1,-1 or 0
// use MyArgument within the method
}

可以在构造函数中设置:

public MyComparer(int argument)
{
MyArgument = argument;
}

那么你的语法将是:

var myCustomComparer = new MyComparer(argument);
ListOfObjectsToSort.orderBy(x => x, myCustomComparer);

或者只是

ListOfObjectsToSort.orderBy(x => x, new MyComparer(argument));

关于c# - 带参数的自定义 Icomparer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28225618/

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