【问题标题】:There is no argument given that corresponds to the required formal parameter in Class没有给出与 Class 中所需的形式参数相对应的参数
【发布时间】:2016-01-26 16:20:01
【问题描述】:

我制作了这个使用类来提取信息的sn-p 代码为objects。我对ClassObject programming 还是个新手,所以我容易出错。现在我有一个我完全不明白的问题。我试过全能的谷歌,用不同的运算符替换部分代码,并询问我的程序员朋友。似乎没有人知道发生了什么。

问题发生在CompareBooks 方法中,它一直告诉我我缺少formal parameter。有人建议在方法中使用:base,但它只产生了两个错误。

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();
            }
        }
    }
}

【问题讨论】:

    标签: c# syntax-error


    【解决方案1】:

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

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

    因此你得到了错误。 “形式参数”表示 必须 参数(与 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
    

    那么你的代码应该没问题

    【讨论】:

    • 您在 main 函数中创建了一个名为“book1”的变量这一事实绝不会使其在 book 对象中用作名为“book1”的参数。我将函数重命名为“CompareTo”,这样你就可以得到 book.CompareTo(otherBook)
    • 这解决了我的问题。我之前没有找到关于这个输入参数的任何建议。现在它比较书籍和印刷品“C# For Newbies 比指环王贵”。谢谢! @Ian 被选为您阐述最多的最佳答案,这有助于我进一步学习 C#!
    • @Mikex64 没问题。 ;) 很高兴我能为您的学习提供任何帮助。
    【解决方案2】:

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

    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);
    

    【讨论】:

      猜你喜欢
      • 2016-05-13
      • 1970-01-01
      • 1970-01-01
      • 2016-11-11
      • 2019-08-09
      • 1970-01-01
      • 2017-07-18
      • 2022-08-24
      • 2019-01-16
      相关资源
      最近更新 更多