我正在开发一些应该用于特殊类型实验的软件。
使用以下方法进行实验:
1)“芯片”(基本上是已知尺寸的XY网格)。 2)每个芯片包含“电极”,由芯片上的X和Y坐标以及唯一ID标识。每个电极也可以保持或不保持样品,用简单的bool(它是生物传感芯片)表示。
我有用C#代表这个硬件的对象。
我现在需要在实验中使用硬件;
1)我有一个“实验”,它暴露了IEnumerable持有“ExperimentStep”对象。 2)“ExperimentStep”包含一个名称,以及涉及的“电极”的有限列表。
某些实验步骤可以同时运行,并且可以更改电极的“HasSample”属性。因此,当我执行“ExperimentStep”时,最好知道任何时候初始的“HasSample”属性是什么。
这就是我的问题所在;
如果我只是将“Electrode”对象传递给我的“ExpermentStep”,它们可能会被Value传递......是否有可能创建一个IEnumerable来保存对唯一电极的引用,这样每次我想运行一个“ ExperimentStep“该步骤中使用的”电极“列表包含”HasSample“的最新值?我应该使用指针吗?根据我对C ++的有限知识,我希望在这种语言中这是微不足道的(因为你大部分时间都使用指针)。但是在C#中,我真的没有任何线索(我的经验不足)。
答案 0 :(得分:4)
我怀疑你不理解引用类型和值类型之间的区别,以及在C#中传递的值实际意味着什么。
假设Electrode
是一个类,您可以修改它的实例的属性,并且通过对同一对象的任何引用都可以看到这些更改。
我强烈建议您在尝试开发大量生产代码之前确保您对.NET类型系统有充分的了解。不了解正在发生的事情的后果可能是灾难性的。
关于这些主题的几篇文章:
...但我建议你也要获得一本很好的C#入门书。
答案 1 :(得分:4)
在c# a class is reference type。这意味着如果您创建一个类的实例列表,然后还将实例添加到另一个列表,那么它的相同项目。每个列表都会有一个参考。所以,为了这个效果,你可以使用IEnumberable来启动项目。