Class 中没有给出对应于所需形式参数的参数

There is no argument given that corresponds to the required formal parameter in Class

我制作了这段使用 类 提取信息的代码片段 objects。我仍然是 ClassObject programming 的菜鸟,所以我很容易出错。现在我有一个问题,我完全不明白。我试过万能的Google,用不同的运算符替换部分代码,并请教了我的程序员朋友。似乎没有人知道发生了什么。

问题出现在CompareBooks方法中,它一直告诉我我缺少一个formal parameter。有人建议在方法中使用 :base,但它只会造成 2 个错误。

namespace ClassProgram
{
    class Book
    {
        public string name;
        public int id;
        public float price;

        public void PrintBookInfo()
        {
            Console.WriteLine("--------------");
            Console.WriteLine("Book Name: " + this.name);
            Console.WriteLine("Book Id: " + this.id);
            Console.WriteLine("Book Price: " + this.price + " dollars");
        }

        public void CompareBooks(Book book1)
        {
            if (this.price > book1.price)
            {
                Console.WriteLine(this.name + " is more expensive than " + book1.name);
            }
        }

        class MainProgram
        {
            static void Main(string[] args)
            {
                Book book = new Book();
                book.name = "C# For Newbies";
                book.id = 01;
                book.price = 10;
                book.PrintBookInfo();
                book.CompareBooks();
                Book book1 = new Book();
                book1.name = "Lord Of The Rings";
                book1.id = 02;
                book1.price = 5;
                book1.PrintBookInfo();
            }
        }
    }
}

调用时,您的book.CompareBooks();没有Book对象作为参数输入。将此与您的签名进行比较:

public void CompareBooks(Book book1) //the Book object is required in the input

所以你得到了错误。 "Formal parameter" 表示 a-must 参数(与 C# 中的语法糖 optional-parameter 相比)。这意味着您必须在方法的输入参数中放置一些内容才能调用它。

假设在你的 MainProgram 中是这样的 运行:

Book book = new Book();
book.name = "C# For Newbies";
book.id = 01;
book.price = 10;
book.PrintBookInfo();
Book book1 = new Book();
book1.name = "Lord Of The Rings";
book1.id = 02;
book1.price = 5;
book1.PrintBookInfo();
book.CompareBooks(book1); //note that this has input now

那么你的代码应该没问题

您没有提供任何关于您的第一本书应该与哪本书进行比较的信息。我想你是这样说的:

Book book = new Book();
book.name = "C# For Newbies";
book.id = 01;
book.price = 10;
book.PrintBookInfo();

Book book1 = new Book();
book1.name = "Lord Of The Rings";
book1.id = 02;
book1.price = 5;
book1.PrintBookInfo();

book.CompareBooks(book1);