cli C ++对特定属性排序对象列表

巴特88

我只想对某个属性排序列表。

我有一个LinePiece具有以下属性对象:

String^ Type;
int X, Y, X2, Y2;
System::String^ Text;

现在,我有了这些列表,LinePieces并希望在上对它们进行排序X value

我在中找到了一些东西,List->Sort();但是我需要提供一些信息。但是我不知道如何告诉它在X值上对列表进行排序。

那么,如何在对象的X值上对列表进行排序?

大卫·尤(David Yaw)

如果我在问题的两行之间阅读,听起来好像有时您希望根据X进行排序,而有时您希望根据Y进行排序如果是这种情况,那么我将实现一个Comparer对象,并将其传递List->Sort()给指定它们应该如何排序。

public ref class CompareByX : Comparer<LinePiece^>
{
public:
    virtual int Compare(LinePiece^ a,LinePiece^ b) override
    {
        return a->X.CompareTo(b->X);
    }
};

int main(array<System::String ^> ^args)
{
    List<LinePiece^>^ list = ...

    list->Sort(gcnew CompareByX());
}

另一方面,如果LinePiece有一个单一的,固有的,通用的排序顺序,则可以IComparable在该类上实现,并使用默认的排序方式。但是,执行此操作时,应注意仅0在两个对象相等时才返回

执行此操作时,您不需要将任何额外的参数传递给Sort(),因为这些对象已经知道如何对其进行排序。

public ref class LinePiece : public IComparable<LinePiece^>
{
public:
    String^ Type;
    int X, Y, X2, Y2;
    String^ Text;

    virtual int CompareTo(LinePiece^ other)
    {
        int result = 0;

        if (result == 0) result = this->X.CompareTo(other->X);
        if (result == 0) result = this->Y.CompareTo(other->Y);
        if (result == 0) result = this->X2.CompareTo(other->X2);
        if (result == 0) result = this->Y2.CompareTo(other->Y2);
        if (result == 0) result = this->Type->CompareTo(other->Type);
        if (result == 0) result = this->Text->CompareTo(other->Text);

        return result;
    }
}

int main(array<System::String ^> ^args)
{
    List<LinePiece^>^ list = ...

    list->Sort();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

特定属性的C#总和对象列表

来自分类Dev

c#按对象的属性对对象列表进行排序

来自分类Dev

如何在C ++ / CLI中设置非指向对象的属性

来自分类Dev

C ++ / CLI:如何编写属性的属性

来自分类Dev

在C ++ / CLI代码中使用本机对象

来自分类Dev

按属性对对象列表进行排序 C#(自定义排序顺序)

来自分类Dev

C#、LINQ 一种通用排序方法,可按对象属性和嵌套属性对列表进行排序

来自分类Dev

C#像C ++ / CLI中的枚举描述属性

来自分类Dev

C#:按可以为空的DateTime属性对对象列表进行排序

来自分类Dev

C#:按可为空的DateTime属性对对象列表进行排序

来自分类Dev

C#如何按任何属性对对象列表进行排序

来自分类Dev

对象引用未设置为对象的实例(C ++ / CLI)

来自分类Dev

如何在C ++ / CLI接口中声明默认的索引属性

来自分类Dev

使用C ++ / CLI从泛型函数返回泛型列表

来自分类Dev

如何检查包含的c ++ / cli ref项目列表?

来自分类Dev

如何检查c ++ / cli ref项目的列表是否相等?

来自分类Dev

如何使用JNI将C ++ / CLI对象返回Java?

来自分类Dev

C ++ / CLI引发另一个对象的事件

来自分类Dev

是否所有 C++/CLI 对象都需要处理?

来自分类Dev

C# - 按对象的多个属性排序

来自分类Dev

合并对象列表的排序实现C#

来自分类Dev

C ++ / CLI项目

来自分类Dev

C ++ / CLI线程-InvalidProgramException

来自分类Dev

C ++ \ CLI线程启动

来自分类Dev

如何在C#中按一定条件按属性对对象列表<t>进行排序

来自分类Dev

从C ++移植到C ++ / CLI

来自分类Dev

如何将对象转换为C ++ / CLI中我不知道类型参数的通用列表?

来自分类Dev

将 C# 对象(包含静态对象成员)作为参数传递给 C++/CLI 程序

来自分类Dev

C#从对象列表中提取属性

Related 相关文章

  1. 1

    特定属性的C#总和对象列表

  2. 2

    c#按对象的属性对对象列表进行排序

  3. 3

    如何在C ++ / CLI中设置非指向对象的属性

  4. 4

    C ++ / CLI:如何编写属性的属性

  5. 5

    在C ++ / CLI代码中使用本机对象

  6. 6

    按属性对对象列表进行排序 C#(自定义排序顺序)

  7. 7

    C#、LINQ 一种通用排序方法,可按对象属性和嵌套属性对列表进行排序

  8. 8

    C#像C ++ / CLI中的枚举描述属性

  9. 9

    C#:按可以为空的DateTime属性对对象列表进行排序

  10. 10

    C#:按可为空的DateTime属性对对象列表进行排序

  11. 11

    C#如何按任何属性对对象列表进行排序

  12. 12

    对象引用未设置为对象的实例(C ++ / CLI)

  13. 13

    如何在C ++ / CLI接口中声明默认的索引属性

  14. 14

    使用C ++ / CLI从泛型函数返回泛型列表

  15. 15

    如何检查包含的c ++ / cli ref项目列表?

  16. 16

    如何检查c ++ / cli ref项目的列表是否相等?

  17. 17

    如何使用JNI将C ++ / CLI对象返回Java?

  18. 18

    C ++ / CLI引发另一个对象的事件

  19. 19

    是否所有 C++/CLI 对象都需要处理?

  20. 20

    C# - 按对象的多个属性排序

  21. 21

    合并对象列表的排序实现C#

  22. 22

    C ++ / CLI项目

  23. 23

    C ++ / CLI线程-InvalidProgramException

  24. 24

    C ++ \ CLI线程启动

  25. 25

    如何在C#中按一定条件按属性对对象列表<t>进行排序

  26. 26

    从C ++移植到C ++ / CLI

  27. 27

    如何将对象转换为C ++ / CLI中我不知道类型参数的通用列表?

  28. 28

    将 C# 对象(包含静态对象成员)作为参数传递给 C++/CLI 程序

  29. 29

    C#从对象列表中提取属性

热门标签

归档