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 サイトの他の関連記事を参照してください。