繁体   English   中英

无法从方法组转换为Int32

[英]Cannot convert from method group to Int32

我希望我的小型数学程序看起来非常时尚,这意味着在Main方法下,我具有以下方法:

Greet()
UserInput1()
UserInput2()
Result()

Greet()我只说“ HI”,在UserInput1()我要收集第一个数字,在UserInput2()我要收集第二个数字,在Result()我要打印UserInput1 + UserInput2的结果。 我可以在UserInput 1 and 2收集数字,但如果不在Main()函数下为它们分配值,就好像无法将它们发送到Result()

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            Greet();
            firstNumber();
            secondNumber();
            result(firstNumber, secondNumber);
            Console.ReadKey();
        }

        public static void Greet()
        {
            Console.WriteLine("Hello, pls insert two numbers");
        }

        public static int firstNumber()
        {
            int num01 = Convert.ToInt32(Console.ReadLine());
            return num01;
        }

        public static int secondNumber()
        {
            int num02 = Convert.ToInt32(Console.ReadLine());
            return num02;
        }

        public static void result( int num01, int num02)
        {

            Console.WriteLine(num01 + num02);
        }
    }
}

改变这个:

result(firstNumber, secondNumber);

对此:

result(firstNumber(), secondNumber());

并删除上面两行中对2个方法的调用。

要调用不带参数的方法,需要带括号的内容。

无法从方法组转换为int

当您尝试采用一种方法(不调用)并将其作为类型传递时,会出现此错误消息。 result方法需要两个类型为int参数,但是您尝试将方法传递给它,而不是方法调用的结果。

您需要将结果存储在变量中,或使用()调用方法:

像这样:

static void Main(string[] args)
{
    Greet();
    var first = firstNumber();
    var second = secondNumber();
    result(first , second );
    Console.ReadKey(); 
}

或这个:

static void Main(string[] args)
{
    Greet();
    result(firstNumber(), secondNumber());
    Console.ReadKey(); 
}

像下面这样调用方法,以使方法结果也将与firstNumber()secondNumber()输出一起调用:

result(firstNumber(),secondNumber());

更多建议:

通过传递适当的消息,然后显示它,使方法Greet()成为可重用的方法。 这样您就可以将其用于所有显示操作。 该方法的签名为:

public static void Greet(string message)
{
    Console.WriteLine(message);
}

仅当输入可转换时,方法Convert.ToInt32()才会将给定输入转换为整数值。 否则会抛出FormatException 所以我更喜欢您为此使用int.TryParse。 这将帮助您确定转换是否成功。 因此firstNumber()的Method签名将如下所示:

public static int firstNumber()
{
  int num01=0;
  if(!int.TryParse(Console.ReadLine(),out num01))
  {
    Greet("Invalid input");
  }
  return num01;
}

希望您也可以更改secondNumber()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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