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れており、メソッドグループ変換を適用しようとしています。これは、または類似のものを使用するメソッドの引数として使用する場合は機能しますが、文字列のみを使用するメソッドでは機能しません。 。Func<string>

メソッドを呼び出して、その結果を引数として渡します。メソッドを呼び出すには、括弧が必要です。

于 2011-09-23T18:32:40.857 に答える
2

あなたはおそらく意味しました:

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

の後のparensに注意してくださいReadLineReadLine戻り値の代わりにデリゲートを渡そうとしています。

于 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 に答える