Максим В таком случае лучше сделать класс, реализующий IComparer для этих объектов, в Obj реализовать IComparable.
На счет того, чтобы использовать для объектов класс, а не структуру - согласна, будет гораздо легче с ними работать. Структуры нужны, если объектов много.
TheTalion: В таком случае можно при движении объекта проверять, нет ли в листе уже других объектов с координатами "на пути", например для движения чисто по оси x так:
using System;
using System.linq;
...
var clash = Objects.Where(o=>o.y == moveObj.y && o.x >= Math.Min(moveObj.x, newx) && o.x<=Math.Max(moveObj.x,newx).FirstOrDefault();
if(clash != null)
//столконовение
...
где moveObj - тот объект, который надо подвинуть, newx - координата, на которую надо передвинуть.
В clash - будет копия первого из найденных объектов, которые попадают в расстояние от moveObj.x до newx. Если он null, то на пути движения ничего нет.
Для движения не только по горизонтали и вертикали, конечно будет, сложнее.
Еще хочется добавить: будьте внимательны со структурами, когда вы их получаете из списка, не забывайте, что это value type.
Что-то подсказывает, что события тут - сложный и кривой путь, который скорее всего здесь не нужен. Что вы понимаете под сравнивать объекты в листе, по каким критериям сравнивать? Что конкретно вы хотите делать, если в списке уже есть объект с совпадающим X или Y? Зачем вообще в целом нужен этот лист?
Роман: да, я понимаю, что не созданы. Значит, я могу инициализировать это поле в конструкторе при первом создании один раз и больше не возвращаться, наверное, так будет проще. Спасибо!
Роман: это если я словарь _handlers заполняю по ходу выполнения программы. А у меня заранее известны все типы и все методы им соответствующие, и я бы хотела сразу это поле инициализировать готовым словарем.
Пробовала словарь с делегатами делать, но по логике вещей он должен быть статическим полем класса проекта. А в поле делегаты на не статические методы не запихнуть(
На счет того, чтобы использовать для объектов класс, а не структуру - согласна, будет гораздо легче с ними работать. Структуры нужны, если объектов много.