Создание доступного для поиска списка двух типов данных в C # - PullRequest
0 голосов
/ 11 февраля 2012

Взяв начальные структуры данных в классе C #, пытаясь создать доступный для поиска массив строк и int, на которые ссылаются вместе (имя и номер). Мне нужно иметь возможность искать имя и получать как имя, так и номерэто прикреплено к.Мне сказали, что я могу использовать массив структур, но никогда не использовал структуры.Любое простое объяснение, как или лучше?

Заранее спасибо.

1 Ответ

0 голосов
/ 11 февраля 2012

Вы, вероятно, должны использовать что-то вроде хеша для этого, так как ArrayList структур - это квадратное круглое отверстие с квадратным колышком.

Вы объявляете структуру так же, как calss.

public struct Foo {
    public String Bar { get; set; }
    public Int32  Biz { get; set; }
}

И вы можете создать список массивов, как если бы вы использовали любой тип

var list = new ArrayList();
list.add(object);

Другая проблема заключается в том, что ArrayList не является универсальным, он будет приводить все к Object, что означает, что вам придется привести все обратно к типу Foo, чтобы работать с ним.

var foo = (Foo)list.item(0);

Вам было бы намного лучше, если бы вы пошли по маршруту List вместо Hash, используя общий класс списка, такой как List и объявив его тип;

var list = List<Foo>();
var foo = new Foo { Bar = "Hello World", Biz = 1 };
list.add(foo);

Что касается поиска в списке, я предпочитаю использовать методы LINQ, потому что они быстро кодируются и легко читаются.

var matches = list.Where( x => x.Biz > 1 );

Но если вы не можете сделать это, то итерация всегда работает

var matches = new List<Foo>();
foreach ( var foo in list ) {
    if ( list.Biz > 1 ) {
        matches.add(foo);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...