0
// Indexer for the _accountList
public Account this[int index]
{
    get
    {
        if (index >= 0 && index < _accountList.Length)
            return _accountList[index];
        else
            throw new IndexOutOfRangeException("index is out of range");
    }
}

これらは私が取ったいくつかのメモであり、私たちがカバーしているものですが、私の研究の後でも、いつ、どのようにインデクサーを使用するかについてのこの理論についてはまだ漠然としています.

私の質問は、インデクサーをいつどのように使用するかを知る方法です。ステートメントが真かどうかを確認する唯一のポイントですか? 初心者向けにインデクサーの詳細をどこで読むことができますか? そして、最後の行の例外はどういう意味ですか?

throw new IndexOutOfRangeException("index is out of range");

とはthrowどういう意味ですか? 範囲内にない場合は、新しいインスタンスを範囲外にスローすると述べていると思います。カットアンドドライのように見えますが、この例外をいつ使用するかはいつわかりますか?

4

2 に答える 2

2

私の質問は、インデクサーをいつどのように使用するかを知ることです。

便利な場合、およびオブジェクトへのアクセスに関して意味がある場合は、インデクサーを使用します。たとえば、カスタムリストタイプを実装している場合は、便利でクリーンなリストのようなアクセスのためのインデクサーを提供する可能性があります。プロセスを表すクラスを実装している場合、プロセスは明らかにアイテムのコレクションではないため、おそらくインデクサーは実装しません。

ステートメントが真であるかどうかを確認するための唯一のポイントはありますか?

いいえ、近くもありません。重要なのは、インデックスで指定されたコレクション内のアイテムを取得および/または設定することです。

どういうthrow意味ですか?範囲内にない場合は、新しいインスタンスを範囲外にスローすることを示していると思います。カットして乾燥しているようですが、この例外をいつ使用するかはいつわかりますか?

これはインデクサーとは関係がなく、例外と関係があります。例外についてまだ学習していない場合は、学習するときにこれに取り組んでください。ただし、これは単なる境界チェックであり、例外が使用されるのはそれだけではありません。

于 2012-06-07T03:27:28.913 に答える
1

インデクサーは、通常はインデックスまたはキーによってコレクション内の要素にアクセスする簡単な方法として使用されます。

あなたの例では、インデクサーを使用するとAccount、指定された でを取得できますindexindexこのロジックは、 の値がコレクション内の項目の範囲内にあるかどうかを確認します。

したがって、たとえば、Accountコレクションに2 つしかなくAccount、インデックス 3 を要求すると、存在しない項目が要求されます。したがって、IndexOutOfRangeException.

于 2012-06-07T03:22:10.180 に答える