布尔运算符和rhs在C ++中的C#等效项

时间:2018-11-22 12:54:56

标签: c# c++ boolean operator-keyword

我正在尝试将C ++代码转换为C#,而这部分代码有些令人困惑。我想知道是否有人帮助我了解它的功能,以及它在c#中的等效功能。

struct Solution
{
    std::vector<double> y;
    bool operator<(const Solution& rhs) const
    {
        if (y < rhs.y)
            return true;
        return false;
    };
}

1 个答案:

答案 0 :(得分:1)

代码重载了<运算符,以允许通过其Solution值比较两个y对象。

以这种方式重载运算符后

solution1 < solution2

的含义与

solution1.y < solution2.y

您也可以在C#中执行此操作:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/operator

我不太了解C ++,我认为C#中的vector<double>等效项应该是List<double>(System.Collections.Generic.List)。我不确定C ++如何比较两个vector<double>,所以我们假装一下,在您的示例中,y只是一个两倍。这将导致此C#代码:

struct Solution
{
    private double y;

    public static bool operator <(Solution a, Solution b)
    {
        return a.y < b.y;
    }

    public static bool operator >(Solution a, Solution b)
    {
        return a.y > b.y;
    }
}

(因为您无法在没有匹配的<运算符的情况下定义>运算符)