Вопрос

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

Эксперименты проводятся с использованием:

1) "Чип" (в основном XY-сетка известных размеров).2) Каждый чип содержит "Электроды", идентифицируемые по их координатам X и Y на чипе и уникальному идентификатору.Каждый электрод также может удерживать или не удерживать образец, на что указывает простой bool (это биосенсорный чип).

У меня есть объекты, которые представляют это оборудование в C #.

Теперь мне нужно использовать аппаратное обеспечение в эксперименте;

1) У меня есть "Эксперимент", который предоставляет IEnumerable объекты, содержащие "ExperimentStep".2) "Этап эксперимента" содержит, помимо прочего, название и ограниченный список задействованных "Электродов".

Некоторые этапы эксперимента могут выполняться одновременно и могут изменить свойство "HasSample" электрода.Поэтому, когда я выполняю "ExperimentStep", было бы полезно знать, каково начальное свойство "HasSample" в любой момент времени.

Вот в чем заключается моя проблема;

Если я просто передам объекты "Electrode" в свой "ExpermentStep", они, вероятно, будут переданы по значению...Возможно ли создать IEnumerable, который содержит ссылки на уникальные электроды, чтобы каждый раз, когда я хочу запустить "ExperimentStep", список "Электродов", используемых на этом шаге, содержал самое последнее значение для "HasSample"?Должен ли я использовать указатели для этого??Исходя из моих ограниченных знаний C ++, я бы ожидал, что это будет тривиально на этом языке (поскольку большую часть времени вы работаете с указателями).Но в C # я действительно понятия не имею (и у меня недостаточно опыта).

Это было полезно?

Решение

В c # класс - это ссылочный тип.Это означает, что если вы создаете список экземпляров класса, а затем также добавляете экземпляры в другой список, то в нем будут те же элементы.Каждый список будет содержать ссылку.Таким образом, с этой целью да, вы можете увеличить количество элементов, используя IEnumberable .

Другие советы

Я подозреваю, что вы не понимаете разницы между ссылочными типами и типами значений, и что на самом деле означает передача по значению в C #.

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

Я сильно рекомендую вам убедиться, что у вас есть четкое представление о системе .NET type system, прежде чем пытаться разработать большой объем производственного кода.Последствия непонимания того, что происходит, могут быть катастрофическими.

Пара моих статей на эти темы:

...но я предлагаю вам также получить хорошую вводную книгу по C #.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top