русский
Germany.ruForen → Архив Досок→ Programmierung

С# ArrayList.BinarySearch

04.08.06 13:27
Re: С# ArrayList.BinarySearch
 
voxel3d коренной житель
voxel3d
in Antwort JacksonB 04.08.06 11:13, Zuletzt geändert 04.08.06 13:34 (voxel3d)
Между классами и структурами различие заключается в способе размещения соданных объектов, а не во внутренней организации - первое является ссылочным типом и созданные объекты размещается в хипе, а второе структурным и созданные объекты размещаются на стеке. В структуре можно иметь свойства, а в классе можно и не иметь свойств, с этой точки зрения никакой разницы между ними нет. Структуры следует использовать для легковесных объектов, для которых значимым является быстрое размещение и удаление. Структуры не следует использовать, когда происходит многократная передача структуры в метод, принимающий ссылочный тип, например, object. В этом случае всё преимущество использования структур сводится на нет за счёт "упаковки" (boxing), когда структура преобразуется в object. В данном примере мы уже имеем (если использовать структуры) в ArrayList упакованные объекты и при вызове метода CompareTo упаковки лишней не будет. Но при обращении к полю упакованной структуры, там сравнение по полю Name идёт внутри метода, будет происходит "распаковка" (unboxing), что сведёт на нет весь смысл использования структур.
С хэш-таблицами работать просто:

class MyClass
{
public string name;
}
void foo()
{
Hashtable htbl = new Hashtable();
MyClass mc = new MyClass();
MyClass mc1 = new MyClass();
mc.name = "test";
mc1.name = "test2";
htbl[mc.name] = mc;
htbl[mc.name] = mc1; // тут объект, доступный по ключу mc.name, перезапишется
htbl[mc1.name] = null; // второй элемент хэш-таблицы
object obj = htbl[521]; // obj будет равен null
htbl[null] = 354; // так нельзя, будет эксепшн
}


Всё, что тебе надо, создавать объекты и просто запихивать их в хэш-таблицу. Проверка, если нужна, заключается либо в вызове метода ContainsKey(), либо проверкой htbl[key] на null.

Dropbox - средство синхронизации и бэкапа файлов.
 

Sprung zu