Pregunta

Estoy trabajando en algún tipo de software que se debe utilizar para un tipo especial de experimento.

Los experimentos se llevan a cabo usando:

1) A "Chip" (básicamente una rejilla XY de dimensiones conocidas). 2) Cada chip contiene "electrodos", identificados por su coordenadas X e Y en el chip y por un identificador único. Cada electrodo también puede contener o no contener una muestra, indicado por un simple bool (que es un chip biosensor).

Tengo objetos que representan este hardware en C #.

Ahora necesita usar el hardware en un experimento;

1) Tengo un "experimento" que expone una explotación IEnumerable objetos "ExperimentStep". 2) Un "ExperimentStep" tiene un nombre y una lista limitada de "electrodos" que participan entre otras cosas.

Algunos pasos experimento podría ejecutar simultáneamente y podrían cambiar la propiedad "HasSample" de un electrodo. Por lo tanto, cuando realizo un "ExperimentStep" que podría ser bueno para saber lo que la propiedad inicial "HasSample" es a la vez.

Aquí es donde radica mi problema;

Si sólo tiene que pasar objetos "Electrodo" a mi "ExpermentStep" que probablemente se pasan por valor ... ¿Es posible crear un IEnumerable que contiene referencias a los electrodos único para que cada vez que quiera ejecutar un " ExperimentStep" la lista de 'los electrodos' utilizado en este paso tiene el valor más reciente de 'HasSample'? ¿Debo usar punteros para esto ?? Desde mi limitado conocimiento de C ++ que sería de esperar que esto sería trivial en ese idioma (ya que se trabaja con punteros mayor parte del tiempo). Pero en C # Realmente no tengo idea (y no soy lo suficientemente experimentado).

¿Fue útil?

Solución

En c # una clase es referencia de tipo . Esto significa que si se crea la lista de instancias de una clase y luego también se suman los casos a otra lista a continuación, sus los mismos artículos. Cada lista tendrá una referencia. Así que para eso sí efectos Puede hasta los elementos mediante un IEnumberable.

Otros consejos

Sospecho que no entiende la diferencia entre los tipos de referencia y los tipos de valor, y lo que realmente paso por valor medio en C #.

Suponiendo Electrode es una clase, puede modificar las propiedades de una instancia de ella y esos cambios será visible a través de cualquier referencia al mismo objeto.

muy recomiendan que asegurarse de que tiene una firma comprensión del sistema de tipo .NET antes de tratar de desarrollar una gran cantidad de código de producción. Las consecuencias de no entender lo que está pasando puede ser desastroso.

Un par de mis artículos sobre estos temas:

... pero te sugiero que conseguir una buena introducción C # libro también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top