C # эквивалент для оператора bool и rhs в c ++ - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь преобразовать код 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 голосов
/ 22 ноября 2018

Код перегружает оператор <, чтобы разрешить сравнение двух Solution объектов по их значению y.

После такой перегрузки оператора

solution1 < solution2

имеет то же значение, что и

solution1.y < solution2.y

Вы можете сделать это и в C #: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/operator

Я не знаю много C ++, я думаю, что эквивалент vector<double> вC # должен быть 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;
    }
}

(потому что вы не можете определить оператор < без соответствующего оператора >)

...