Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> динамический массив классов, проблема с работой с отдельными элемента 
:(
    Опции темы
DartoIII
Дата 25.12.2011, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 25.12.2011

Репутация: нет
Всего: нет



здравствуйте,не могли бы вы подсказать почему некорректно заносятся данные в массив?
Код

using System;
using System.Collections;
 
namespace ConsoleApplication12
{
    class Person
    {
        public Person(string firstName, string lastName)
        {
            FirstName = firstName;
            LastName = lastName;
        }
 
        public string FirstName { get; set; }
        public string LastName { get; set; }
 
        public ArrayList Children = new ArrayList();
 
        public void AddChild(string firstName, string lastName)
        {
            Children.Add(new Person(firstName, lastName));
        }
 
        static void Main(string[] args)
        {
 
            ArrayList gh=new ArrayList();
            Person fh=new Person("f","k");
            fh.AddChild("ol9", "fghop");
            fh.AddChild("kol9", "ll99");
            foreach (Person value in fh.Children)
                Console.WriteLine("elementi massiva",value);
            Console.ReadLine();
        }      
    }  
}

пробовал :
Код

var PersArray = new List<Person>();
PersArray.Add (new Person("оля","p"));
PersArray.Add (new Person("катя","т"));

результат аналогичный\при чем кол-во элементов массива выдает правильно,но на экран выводтися 
  elementi massiva ConsoleApplication12.Person
  elementi massiva ConsoleApplication12.Person
вроде понял что нужно переопределять методы\для того что бы я мог у каждого элемента PersArray получать например поля FirstName какие методы мне нужно переопределять?

 если я использую так
Код

public override string ToString()
{
    return "Person: " + FirstName + " " + LastName;
}

 
 то выдается только значения при инициализации.А если допустим надо в счетчике получать значения каждого элемента массива?
PM MAIL   Вверх
LOPUH
Дата 26.12.2011, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Растение
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 15.2.2008
Где: Красноярск

Репутация: нет
Всего: 4



Ну вполне логично. Ведь  у вас  value  -это объект, и 
Код

// вы вызываете метод ToString класса Object
Console.WriteLine("elementi massiva",value);

 Но вы хотите получите получить доступ к  полям объекта. Вам нужно явно преобразовать объект к классу Person   и обратиться к его полю.. как то так:
Код

foreach (Person value in fh.Children)
                Console.WriteLine("elementi massiva  {0}  ", ((Person) value).FirstName);


Добавлено через 8 минут и 42 секунды
Хотя, возможно, здесь можно обойтись и без явного приведения, просто обратиться к полю объекта .. Пишу с коммуникатора не на чем проверить..

Это сообщение отредактировал(а) LOPUH - 26.12.2011, 09:57
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0379 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.