【问题标题】:Cannot convert from method group to Int32无法从方法组转换为 Int32
【发布时间】:2016-05-05 16:58:26
【问题描述】:

我希望我的小型数学程序看起来非常流畅,我的意思是在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);
        }
    }
}

【问题讨论】:

    标签: c# methods compiler-errors int


    【解决方案1】:

    改变这个:

    result(firstNumber, secondNumber);
    

    到这里:

    result(firstNumber(), secondNumber());
    

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

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

    【讨论】:

      【解决方案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(); 
      }
      

      【讨论】:

        【解决方案3】:

        像下面这样调用方法,这样方法结果就会被调用,同时输出firstNumber()secondNumber()

        result(firstNumber(),secondNumber());
        

        更多建议:

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

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

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

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

        希望你也改一下secondNumber()

        【讨论】:

        • 谢谢 Flat Eric,David Pine,倒霉。确实很有帮助。 :))
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-25
        • 2013-10-02
        • 2012-12-02
        • 1970-01-01
        相关资源
        最近更新 更多