私はC#の初心者プログラマーです。IEnumerableを使用するエクササイズに取り掛かりました。IEnumerableをメソッドの戻り値の型またはコンストラクタとして使用する理由
私は、コードを理解すると思うが、私は
.....次孤立コードを検討し、あなたが今までにこのよう例1
それを使用する理由を理解するのに苦労しています
private List<Card> cards;
public Deck (IEnumerable<Card> initialCards)
{
cards = new List<Card>(initialCards);
}
デッキオブジェクトを作成し、このコンストラクタがある呼び出すコード...
Card[] cardArray = new Card[numberOfCards];
for (int i = 0; i < numberOfCards; i++)
{
cardArray[i] = new Card((Suits)random.Next(0, 4), (Values)random.Next(0, 12));
}
deck1 = new Deck(cardArray);
誰かが最初に以下の私の理解を確認する気にしないだろう場合は...
- 我々は型カードの配列を作成し、我々は[]カードでデッキコンストラクタに配列を渡すカード
- でそれを埋めますDeckオブジェクトを作成するときに使用します。コンストラクタの引数にIEnumerable型のパラメータが含まれていても、配列がIEnumerableを実装しているので有効です。 ここでキャストが起こっていますか?
- リストカードは、オーバーロードされたリストコンストラクタに渡されるIEnumerable引数で初期化されます。 もう一度、これは何かのキャストか変換ですか?
中間形式としてIEnumerableを使用することは全く意味がないようです。コードはまだ私は、コンストラクタを変更した場合、最終的に使用されているforeachループ...これは同じクラスのメソッドである2
public IEnumerable<string> GetCardNames()
{
string[] stringArray = new string[cards.Count];
for (int i = 0; i < stringArray.Length; i++)
{
stringArray[i] = cards[i].ToString();
}
return stringArray;
}
public Deck (Card [] initialCards)
{
cards = new List<Card>(initialCards);
}
例を含め、同じ作品。繰り返しますが、文字列配列に対してforeachを実行できるときにIEnumerableとして返される理由がわかりません。
例3
public IEnumerable<IWebElement> ElementCollection { get; set; }
これは非常にnoobishですが、誰かが、これは何を言っているか私に説明できますか? IEnumerable型のパブリックプロパティですか?インターフェイスをプロパティタイプとして使用すると、他のタイプとはどのように異なるのですか?例えば文字列
これはコードの後半でLINQで使用されていますが、これはまだ学習には至りません。この例では、IEnumerableを何かを反復したいだけであれば使えるのでしょうか?
多くのおかげで、
列挙型は、配列操作の一般化です。これらの操作には、配列によって提供されるもののサブセットが含まれます。すべての配列(またはリスト)*は* IEnumerableを実装します。 – user2864740