2016-10-07 2 views
0

Я пытаюсь Переберите через ArrayList объектов типа (людей), так что я создал два класса:Перебор ArrayList объектов C#

Person.cs

using System; 

namespace GenericTypes 
{ 
    public class Person 
    { 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public int Age { get; set; } 
     public DateTime DateTime { get; set; } 

    } 
} 

People.cs

using System; 
using System.Collections; 
using System.Collections.Generic; 

namespace GenericTypes 
{ 
    public class People 
    { 
     public ArrayList GetNonGenericPeople() 
     { 
      var people = new ArrayList() 
      { 
       new Person() {FirstName = "Djerah", LastName = "Ahmed Rafik", Age = 23, DateTime = DateTime.Today}, 
       new Person() {FirstName = "Djerah", LastName = "Amjed Amir", Age = 11, DateTime = DateTime.Today}, 
       new Person() {FirstName = "Gadda", LastName = "Anoir", Age = 25, DateTime = DateTime.Today} 

      }; 
      return people; 
     } 

     public List<Person> GetGenericPeople() 
     { 
      var people = new List<Person>() 
      { 
       new Person() {FirstName = "Djerah", LastName = "Ahmed Rafik", Age = 23, DateTime = DateTime.Today}, 
       new Person() {FirstName = "Djerah", LastName = "Amjed Amir", Age = 11, DateTime = DateTime.Today}, 
       new Person() {FirstName = "Gadda", LastName = "Anoir", Age = 25, DateTime = DateTime.Today} 

      }; 

      return people; 
     } 
    } 
} 

Что я не мог понять, хо ж цикл по GetNonGenericPeople() так может я выходной каждый объект с его свойства

Program.cs

namespace GenericTypes 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var persons = new People(); 
      var p = persons.GetNonGenericPeople(); 

      foreach (var s in p) 
      { 
       Console.WriteLine(s); 
      } 
     } 
    } 
} 

ответ

2

Try OfType<T>()Linq, который отфильтровывает T экземпляров; другой вариант Cast<T>() который пытается гипс каждый пункт (и бросить исключение, если бросок терпит неудачу)

foreach (var s in p.OfType<Person>()) { 
    ... 
} 
+0

Он работал .. Спасибо за вашу помощь –

+1

@ D.AhmedRafik: добро пожаловать! Однако помните, что 'ArrayList' является * устаревшим * классом, а' List '- лучший выбор для коллекции. –

+0

Одна вещь, которую я не выяснил, - это то, почему нам нужно бросить ArrayList в Generic List, чтобы мы могли получить доступ к свойствам Person –

Смежные вопросы