【问题标题】:The best overloaded method match for 'int.Parse(string)' has some invalid arguments'int.Parse(string)' 的最佳重载方法匹配有一些无效参数
【发布时间】:2011-09-23 18:30:47
【问题描述】:
    Console.WriteLine("Enter the page that you would like to set the bookmark on: ");
    SetBookmarkPage(int.Parse(Console.ReadLine));

是 int.Parse(string) 部分给了我这个线程主题的错误消息。不太明白我应该做什么,我正在将一个字符串解析为一个 int 并使用 SetBookmarkPage 方法发送它,我错过了什么? SetBookmarkPage 看起来像这样,并且包含在同一个类中:

private void SetBookmarkPage(int newBookmarkPage) {}

【问题讨论】:

  • sigh...错过了一些括号.. 我责怪疲倦和 VS 没有像 Netbeans 那样完成括号:p 感谢您指出我明显的愚蠢错误>_

标签: c# visual-studio-2010 formatexception


【解决方案1】:

没有接受委托的int.Parse 重载。听起来你很想做

 int.Parse(Console.ReadLine())

但是,即使这样,您的程序也会面临潜在的异常。你应该这样做:

 int bookmarkId = 0;
 string info = Console.ReadLine();

 if(!int.TryParse(info, out bookmarkId))
    Console.WriteLine("hey buddy, enter a number next time!");

 SetBookmarkPage(bookmarkId);

【讨论】:

  • +1 表示 TryParse。在进行大规模导入和转换时,它多次救了我的命。
【解决方案2】:

改成

SetBookmarkPage(int.Parse(Console.ReadLine()));

您在 Console.ReadLine 之后缺少 ()

【讨论】:

    【解决方案3】:

    你需要调用 Console.ReadLine:

    SetBookmarkPage(int.Parse(Console.ReadLine()));    
    

    注意上面多余的()。

    您当前的方法正在传递从Console.ReadLine 方法构建的委托,而不是被调用方法的结果。

    话虽如此,如果您正在阅读用户的输入,我强烈建议您使用int.TryParse 而不是int.Parse。用户输入经常有错误,这可以让你优雅地处理它。

    【讨论】:

      【解决方案4】:

      你想要:

      SetBookmarkPage(int.Parse(Console.ReadLine()));
      

      目前它将Console.ReadLine 视为方法组,并尝试应用方法组转换 - 如果您随后将其用作采用Func<string> 或类似的东西,但不适用于仅采用字符串的方法。

      您想调用该方法,然后将结果作为参数传递。要调用该方法,您需要括号。

      【讨论】:

        【解决方案5】:

        你的意思可能是:

        SetBookmarkPage(int.Parse(Console.ReadLine()));
        

        注意ReadLine 后面的括号。您正在尝试传递 ReadLine 的委托而不是返回值。

        【讨论】:

          【解决方案6】:

          Console.ReadLine是一个方法,你必须用括号调用它:

          SetBookmarkPage(int.Parse(Console.ReadLine()));
          

          没有括号,编译器认为它是一个方法组。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2022-01-08
            • 2014-04-10
            • 2015-10-14
            • 2018-07-14
            • 1970-01-01
            • 2013-01-07
            相关资源
            最近更新 更多