简体   繁体   中英

How to fix “No overload for method ' ' takes 0 arguments”?

How can I fix this error?

"No overload for method 'output' takes 0 arguments".

The error is at the very bottom at "fresh.output();".

I don't know what I'm doing wrong. Can someone tell me what I should do to fix the code?

Here is my code:

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

It's telling you that the method "output" needs arguments. Here's the signature for "output":

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

So if you want to call that you need to pass in four doubles.

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

Or to use hard coded values as an example:

fresh.output(1,2,3,4);

There's no method named output that takes 0 arguments, there's only one that accepts 4 arguments. You must pass parameters to output() :

foreach (Numbers fresh in chosen)
{
    fresh.output(o, tw, th, f);
}

You're calling the output method with 0 (zero) parameters, but you have declared it to receive 4 double values. The compiler doesn't know what it should call, since there is no output method with no parameter.

All your implementations of method output takes arguments. Supply the arguments and you should be able to compile.

Like this:

fresh.output(1, 2, 3, 4);

fresh.output() 2个参数而你没有提供它们

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM