gpt4 book ai didi

c# - 有没有办法对列表中的 Color 元素进行排序(c#)?

转载 作者:行者123 更新时间:2023-12-04 02:43:12 25 4
gpt4 key购买 nike

我的想法是,我有一个根据红色值排序的排序机制(稍后我想继续构建,这样我也可以按绿色和蓝色值排序)。我在实现这种排序机制时遇到问题。

我有一个类叫做 Colorbox这基本上是一个 List<Color>但这样我就可以放一个 List<Color>List<Colorbox> .

我的平均目标是我可以订购这个 Colorbox根据1种颜色(红、蓝、绿)值。 (例如,列表中最左边的值的红色最少)。

我尝试实现 toCompare覆盖(不知道这在 C# 中是否有效,但我知道在 Java 中,当您调用 sort() 方法时也会调用比较)。

这给了我如下代码:

public int CompareTo(object obj) {
Color toCompare = (Color) obj;
if (this.CompareTo(toCompare) == 1)
{
return 1;
}
else
{
return 0;
}
}

但我不知道如何在那里按颜色或一般排序实现我的排序。我必须写一个额外的sort()吗?覆盖原来的。

我真的不知道这个排序代码应该做什么。它是否按值对值进行排序,直到它可以遍历列表并且没有任何更改?还是对于这个想法来说这是一个太长的方法?

下面我给出类的一般代码:

internal class Colorbox
{
private List<Color> box = new List<Color>();
int colorPicker = 0;
public Colorbox(List<Color> colorList)
{
this.box = colorList;
}
}

我希望有人能帮助解释我应该做什么或者我应该朝哪个方向去解决这个问题。

非常感谢,如果我不清楚,请问任何问题。

最佳答案

我相信你想要 IComparer<T> 比较你的界面 Color类型。这是一个使用 LinqPad 的示例。 RedColorComparer实现将根据颜色的红色数量降序对颜色进行排序,这听起来像是您想要的。注意将它与 Array.Sort 一起使用行。

void Main()
{
var colors = new Color[] { Color.Red, Color.Blue, Color.Gray };
Array.Sort(colors, new RedColorComparer());
colors.Dump();
}

public class RedColorComparer : IComparer<Color>
{
public int Compare(Color a, Color b)
{
if (a.R < b.R)
return 1;
else if (a.R == b.R)
return 0;
else
return -1;
}
}

结果是这样的:

enter image description here

关于c# - 有没有办法对列表中的 Color 元素进行排序(c#)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58356081/

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