SORU
24 AĞUSTOS 2011, ÇARŞAMBA


IEnumerable< çevrim dizisi;T>

Gibi:* *5 temel bir sınıf varsayalım

class Employee
{
   public string Name;
   public int Years;
   public string Department;
}

Sonra (ayrı bir sınıfta) aşağıdaki kod parçaları var (ama ben anladım sanırım):

Aşağıdaki kod parçası dizi initiliser işgücü değişkene atanmış olarak aynı tip Çalışan nesneler dizisi oluşturur çünkü çalışır inanıyorum.

Employee[] workforceOne = new Employee[] {
   new Employee() { Name = "David", Years = 0, Department = "software" },
   new Employee() { Name = "Dexter", Years = 3, Department = "software" },
   new Employee() { Name = "Paul", Years = 4, Department = "software" } };

Ben aşağıdaki kod parçası var. Bu Employee nesneleri implicity dizisi, Dizinin bir uygulama olduğu için çalışır inanıyorum () IEnumerable uygulayan sınıf. Bu nedenle, bu dizi IEnumerable atanabilir neden inanıyorum?

IEnumerable workforceTwo = new Employee[] {
   new Employee() { Name = "David", Years = 0, Department = "software" },
   new Employee() { Name = "Dexter", Years = 3, Department = "software" },
   new Employee() { Name = "Paul", Years = 4, Department = "software" } };

Sonra bu kod parçası var:

IEnumerable<Employee> workforceThree = new Employee[] {
   new Employee() { Name = "David", Years = 0, Department = "software" },
   new Employee() { Name = "Dexter", Years = 3, Department = "software" },
   new Employee() { Name = "Paul", Years = 4, Department = "software" } };

Bu kod parçası çalışır neden emin değilim?IEnumerable<Employee> IEnumerable (ve geçersiz kılar (veya aşırı?) devraldığı ama ben bu gibi işler için yukarıdaki için bir döküm gerekmez: GetEnumerator() yöntemi)

//The cast does work but is not required
IEnumerable<Employee> workforceFour = (IEnumerable<Employee>)new Employee[] {
   new Employee() { Name = "David", Years = 0, Department = "software" },
   new Employee() { Name = "Dexter", Years = 3, Department = "software" },
   new Employee() { Name = "Paul", Years = 4, Department = "software" } };

Görünen dizidir olmak örtülü aşağı dökülmüş bir tür IEnumerable IEnumerable<Employee> ama ben her zaman ne zaman ihtiyacın dönüştürmek bir türü çok daha belirgin bir şey ihtiyacın açık bir döküm.

Belki burada bir şey benim anlayış basit ama birisi lütfen bu olayı anlamak için bana yardım kaçırıyorum.

Teşekkür ederim.

CEVAP
24 AĞUSTOS 2011, ÇARŞAMBA


the documentation:

.NET çatısı sürüm*,* 19*,* 18 System.Collections.Generic.IEnumerable<T> genel arabirimleri uygulayan 2.0,. Uygulamaları zamanında diziler için sağlanır ve bu nedenle belgeler yapı araçları için görünmez. Sonuç olarak, genel arabirimler görünmüyor bildirimi sözdizimi Dizi sınıf, ve orada hiçbir başvuru konuları için arabirim üyeleri bu çağırılırsa, sadece döküm bir dizi için genel bir arabirim tipi (açık arabirim uygulamaları).

Böylece, Employee[] 22 uygular**.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Autodesk 3ds Max Learning Channel

    Autodesk 3ds

    23 HAZİRAN 2010
  • Caroline Saquet

    Caroline Saq

    1 EKİM 2011
  • WHZGUD2

    WHZGUD2

    21 EYLÜL 2011