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) {}
答案 0 :(得分: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);
答案 1 :(得分:2)
您需要调用Console.ReadLine:
SetBookmarkPage(int.Parse(Console.ReadLine()));
请注意上面的额外()
。
您当前的方法是传递从Console.ReadLine
方法构建的委托,而不是调用方法的结果。
话虽如此,如果您正在阅读用户的输入,我强烈建议您使用int.TryParse
代替int.Parse
。用户输入经常出错,这可以让你优雅地处理它。
答案 2 :(得分:2)
你想:
SetBookmarkPage(int.Parse(Console.ReadLine()));
目前它正在查看Console.ReadLine
作为方法组,并尝试应用方法组转换 - 如果您将其用作方法的参数,这将有效采用Func<string>
或类似的东西,但不是仅采用字符串的方法。
您希望调用方法,然后将结果作为参数传递。要调用该方法,您需要括号。
答案 3 :(得分:2)
你可能意味着:
SetBookmarkPage(int.Parse(Console.ReadLine()));
注意ReadLine
之后的parens。您正在尝试传递ReadLine
的委托而不是返回值。
答案 4 :(得分:2)
将其更改为
SetBookmarkPage(int.Parse(Console.ReadLine()));
您在Console.ReadLine
之后缺少()答案 5 :(得分:2)
Console.ReadLine
是一个方法,必须用括号调用它:
SetBookmarkPage(int.Parse(Console.ReadLine()));
没有括号,编译器认为它是方法组。