【问题标题】:C# equivalent for bool operator and rhs in c++c++ 中布尔运算符和 rhs 的 C# 等效项
【发布时间】:2019-04-25 04:06:10
【问题描述】:

我正在尝试将 C++ 代码转换为 C#,这部分代码有点令人困惑。我想知道是否有人帮助我理解它的作用以及它在 c# 中的等价物。

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

【问题讨论】:

  • 这是运算符重载仅供参考...

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


【解决方案1】:

代码重载了&lt; 运算符,以允许通过它们的y 值比较两个Solution 对象。

以这种方式重载运算符后

solution1 < solution2

含义相同
solution1.y < solution2.y

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

我对C++了解不多,我认为C#中的vector&lt;double&gt;应该是List&lt;double&gt;(System.Collections.Generic.List)。我不确定,C++ 如何比较两个vector&lt;double&gt;,所以让我们假装,在你的例子中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;
    }
}

(因为在没有匹配的&gt; 运算符的情况下,您无法定义&lt; 运算符)

【讨论】:

  • 感谢您的回答。我应该定义重载还是程序创建它?
  • 我不确定,如果我理解你的问题。我希望我的答案的编辑有所帮助。
猜你喜欢
  • 2015-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-26
  • 2020-03-09
  • 2012-02-19
相关资源
最近更新 更多