Ошибка CS7036 Не указан аргумент, соответствующий требуемому формальному параметру - PullRequest
0 голосов
/ 15 октября 2019

Я получаю сообщение об ошибке в заголовке, может кто-нибудь сказать мне, что не так с моим кодом?

public class Book
{
    public string Distributor { get; set; }
    public string Name { get; set; }
    public int Amount { get; set; }
    public double Price { get; set; }
    public Book(string distributor, string name, int amount, double price)
    {
        this.Distributor = distributor;
        this.Name = name;
        this.Amount = amount;
        this.Price = price;
    }
    public override string ToString()
    {
        string line = string.Format("| {0,15} | {1,15} | {2,5} | {3,6} |", Distributor, Name, Amount, Price);
        return line;
    }
    public override bool Equals(object obj)
    {
        Book book = obj as Book;
        return book.Price == Price;
    }
    public override int GetHashCode()
    {
        return Price.GetHashCode();
    }
    public static Book operator >= (Book book1, Book book2) //the error here
    {
        Book temp = new Book();
        if (book1.Name == book2.Name && book1.Price > book2.Price)
            temp = book1;
        return temp;
    }
    public static Book operator <= (Book book1, Book book2) // and here
    {
        Book temp = new Book();
        if (book1.Name == book2.Name && book1.Price < book2.Price)
            temp = book2;
        return temp;
    }
}

Я получаю сообщение об ошибке в строках оператора. Я хочу, чтобы операторы «> =» и «<=» находили книги с одинаковыми названиями, которые стоят дороже. </p>

1 Ответ

1 голос
/ 15 октября 2019

Я хочу, чтобы операторы '> =' и '<=' находили книги с одинаковыми именами, и которые стоят дороже. </p>

Это не то, что делают эти операторы. Они сообщают вам, является ли одно значение меньше / больше или равно другому . Следовательно, они должны возвращать bool вместо Book. Вам также нужно решить, что возвращать, если у них разные имена:

public static bool operator >= (Book book1, Book book2)
{
    if (book1.Name == book2.Name)
       return (book1.Price >= book2.Price);
    else
       return ?? what do you want to return here ??
}
public static bool operator <= (Book book1, Book book2)
{
    if (book1.Name == book2.Name)
       return (book1.Price <= book2.Price);
    else
       return ?? what do you want to return here ??
}

Если это действительно то, что вы пытаетесь сделать, то я бы посоветовал вам также перегружать < и >операторы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...