3
    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) {}

4

6 回答 6

4

没有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);
于 2011-09-23T18:33:42.100 回答
2

您需要调用 Console.ReadLine:

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

注意上面的额外()内容。

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

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

于 2011-09-23T18:32:39.860 回答
2

你要:

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

目前它被Console.ReadLine视为一个方法组,并尝试应用一个方法组转换 - 如果您将它用作采用 aFunc<string>或类似内容的方法的参数,这将起作用,但不适用于仅采用字符串的方法.

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

于 2011-09-23T18:32:40.857 回答
2

你可能的意思是:

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

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

于 2011-09-23T18:32:56.190 回答
2

将其更改为

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

您在 Console.ReadLine 之后缺少 ()

于 2011-09-23T18:33:13.027 回答
2

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

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

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

于 2011-09-23T18:33:29.843 回答