2

Mark Michaelisの本Essentials C# 3.0 for .NET Framework 3.5を読んでいます。より多くのクラスが含まれているので、誰かがこの本を読んで、おそらく同じ問題を抱えていることを願っていました.

第 7 章のコードは失敗します (300 ページ)。リスト 7.2 は、インターフェイスを統合する方法を示しています。本に書かれているように、すべてのコードを書きました。エラーが発生します:

'xxxx.ConsoleListControl.DisplayHeader(string[])': すべてのコード パスが値を返すわけではありません。

問題のコードは次のとおりです。

    public static void List(string[] headers, Ilistable[] items)
    {
        int[] columnWidths = DisplayHeaders(headers);

        for (int count = 0; count < items.Length; count++)
        {
            string[] values = items[count].ColumnValues;
            DisplayItemsRow(columnWidths, values);
        }
    }

    /// <summary>
    /// Displays the column headers
    /// </summary>
    /// <returns>returns an array of column widths</returns>
    private static int[] DisplayHeaders(string[] headers)
    {

    }

    private static void DisplayItemsRow(int[] columnWidths,string[] values)
    {

    }
}

ヘッダーには 4 つのstring[]項目 (FirstName、LastName、Address、Phone) が含まれます。この問題の原因や修正方法がわかりません。DisplayHeaders価値がないと思うし、価値columnwidthsもない。

ここにすべてのコードを掲載しているわけではありません。5 つのクラスと 1 つのインターフェイスがあります。多分それは多すぎて必要ないだろうと思いました。誰かがすべてのコードを必要とする場合は、喜んでここに掲載します。

4

3 に答える 3

4

ページをめくるか、もう一度読んでください。メソッドには戻り値の型がありますが、return ステートメントがないため、メソッドにコードを記述することになっていると思います。

編集:さて、PDFをダウンロードしました。本は、このコードリストの上に明示的に述べています:

別の例を考えてみましょう

そして、コードでは次のように述べています。

private static int[] DisplayHeaders(string[] headers)
{
    // ...
}

この// ...部分は、説明されている概念にとって興味深いものではないことを示しており、簡潔にするために省略されています。

このコードは、インターフェイスが実行できることを説明するために示されています (この場合、 を実装する任意の種類のオブジェクトのリストを出力しますIlistable)。静的ヘルパー メソッドはこれとは関係ありません。コードは実行するためのものではありません。

于 2013-09-27T13:37:08.233 に答える
0

メソッド DisplayHeaders は、整数の配列 ( int[]) を返すと言っていますが、実際には何も返していません。少し後のコードで、何か役に立つことをメソッドに入力する可能性が非常に高くなりますが、コードをコンパイルするには、配列を返す必要があります。それを行う簡単な方法は、次のように変更することです

private static int[] DisplayHeaders(string[] headers)
{
    return new int[0];
}

これにより、整数の空の配列が返されます。

于 2013-09-27T13:45:41.387 に答える