7

我该如何解决这个错误?

“方法'输出'没有重载需要0个参数”。

错误位于“fresh.output();”的最底部。

我不知道我做错了什么。有人能告诉我我应该怎么做才能修复代码吗?

这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication_program
{
    public class Numbers
    {
        public double one, two, three, four;
        public virtual void output(double o, double tw, double th, double f)
        {
            one = o;
            two = tw;
            three = th;
            four = f;
        }
    }
    public class IntegerOne : Numbers
    {
        public override void output(double o, double tw, double th, double f)
        {
            Console.WriteLine("First number is {0}, second number is {1}, and third number is {2}", one, two, three);
        }
    }
    public class IntegerTwo : Numbers
    {
        public override void output(double o, double tw, double th, double f)
        {
            Console.WriteLine("Fourth number is {0}", four);
        }
    }
    class program
    {
        static void Main(string[] args)
        {
            Numbers[] chosen = new Numbers[2];

            chosen[0] = new IntegerOne();
            chosen[1] = new IntegerTwo();

            foreach (Numbers fresh in chosen)
            {
                fresh.output();
            }     
            Console.ReadLine();
        }
    }
}
4

5 回答 5

11

它告诉您“输出”方法需要参数。这是“输出”的签名:

public override void output(double o, double tw, double th, double f)

因此,如果您想跟注,您需要传递四个双打。

fresh.output(thing1,thing2,thing3,thing4);

或者以硬编码值为例:

fresh.output(1,2,3,4);
于 2013-10-22T12:25:47.297 回答
4

没有一个名为output接受 0 个参数的方法,只有一个接受 4 个参数。您必须将参数传递给output()

foreach (Numbers fresh in chosen)
{
    fresh.output(o, tw, th, f);
}
于 2013-10-22T12:26:38.753 回答
0

您正在output使用 0(零)参数调用该方法,但您已声明它接收 4 个双精度值。编译器不知道它应该调用什么,因为没有output没有参数的方法。

于 2013-10-22T12:26:01.260 回答
0

您对方法的所有实现都output需要参数。提供参数,您应该能够编译。

像这样:

fresh.output(1, 2, 3, 4);
于 2013-10-22T12:26:19.697 回答
0

fresh.output()期望 2 个参数,但您没有提供它们

于 2013-10-22T12:27:11.243 回答