首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数组元素用LINQ替换CompareTo

数组元素用LINQ替换CompareTo
EN

Stack Overflow用户
提问于 2017-06-02 12:39:04
回答 1查看 719关注 0票数 0

我正在做一个用柱子代表栅栏的项目。每个栅栏正好有两个实现IComparable的柱子,并在每个栅栏中排序。为了在Fence上重写我的CompareTo,我需要比较这个和另一个栅栏之间的post 0;如果结果返回0,那么我需要比较这个和另一个栅栏之间的post 1。我编写了一个简单的for循环来执行这个逻辑,我在下面介绍了这个逻辑。然而,Resharper给了我一个警告,我应该用LINQ替换for循环。有一种简单的方法可以用LINQ替换for循环吗?

代码语言:javascript
运行
复制
public int CompareTo(Fence other)
{
    for(int i = 0; i < Posts.Length; i++)
    {
        int c = Posts[i].CompareTo(other.Posts[i]);
        if (c != 0)
            return c;
    }
    return 0;
}
EN

回答 1

Stack Overflow用户

发布于 2017-06-02 14:02:46

由于篱笆正好有两个柱子,因此可以将其简化为:

代码语言:javascript
运行
复制
public int CompareTo(Fence other)
{
    int c = Post[0].CompareTo(other.Post[0]);
    if (c == 0)
         c = Post[1].CompareTo(other.Post[1]);
    return c;
}

请注意,您可以(也可能应该)用Post和“Post1”替换Post0数组。

请注意,这可能会给您一个完全不同的顺序,而不是:

代码语言:javascript
运行
复制
    int c = Post[1].CompareTo(other.Post[1]);
    if (c == 0)
         c = Post[0].CompareTo(other.Post[0]);

据推测,这也同样有效。(也就是说,如果这个帖子比别人的小,但它的Post1大,那么围栏是大的还是小的?)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44329193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档