ホームページ >バックエンド開発 >C++ >反復せずに IEnumerable の数を取得するにはどうすればよいですか?

反復せずに IEnumerable の数を取得するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-26 06:50:13371ブラウズ

How to Get the Count of an IEnumerable without Iteration?

IEnumerable の数を取得する反復なし

特定のシナリオでは、開発者は IEnumerable 内の要素の数を確認する必要がある場合があります。反復処理を必要とせずにコレクションを作成できます。これは、たとえば、処理中の項目の現在数と合計数を示すことによって進行状況を表示する必要がある場合に発生します。

ただし、IEnumerable反復せずにカウントを取得する固有のメソッドがありません。 IEnumerable は、意図的な設計上の選択です。遅延評価を採用し、要求されたときに要素のみを生成します。

解決策: ICollection を利用する

IEnumerable の制限を回避するために、開発者は次の機能を活用できます。 ICollection を継承します。 IEnumerable Count プロパティが含まれています。 IEnumerable をキャストすることで、 ICollection のインスタンスに追加すると、Count プロパティに直接アクセスして、反復を必要とせずに要素の数を提供できます。

例:

次のコードを考えてみましょう:

private IEnumerable<string> Tables
{
    get
    {
        yield return "Foo";
        yield return "Bar";
    }
}

反復せずにテーブルの数を決定するには、コードを次のように変更できます。

var count = ((ICollection<string>)Tables).Count;

ICollection へのキャストCount プロパティへの直接アクセスを有効にし、反復を必要とせずにコレクション内のテーブルの数を示す値 2 を生成します。

以上が反復せずに IEnumerable の数を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。