我正在开发一些软件,它应该用于一种特殊类型的实验。
这些实验使用以下方法执行:
1)“芯片”(基本上是一个已知尺寸的XY网格)。2)每个芯片包含“电极”,通过它们在芯片上的X和Y坐标以及唯一的ID来识别。每个电极也可以容纳或不容纳一个样本,由一个简单的布尔表示(这是一个生物传感芯片)。
我有用C#表示这个硬件的对象。
现在我需要在一个实验中使用硬件;
1)我有一个“实验”,它暴露了一个包含"ExperimentStep“对象的IEnumerable。2) "ExperimentStep“包含一个名称,以及涉及的”电极“的有限列表。
某些实验步骤可以同时进行,并可能改变电极的"HasSample“性质。因此,当我执行"ExperimentStep“时,最好随时知道初始的"HasSample”属性是什么。
这是我的问题所在;
如果我只是将“电极”对象传递给我的"ExpermentStep“,它们可能会通过值传递……有没有可能创建一个保存对唯一电极的引用的IEnumerable,以便每次我想要运行一个"ExperimentStep“时,该步骤中使用的"HasSample”列表都会保存“HasSample”的最新值?我应该为此使用指针吗??从我对C++的有限了解来看,我希望这在该语言中是微不足道的(因为您大部分时间都在使用指针)。但在C#中我真的一无所知(而且我的经验还不够丰富)。
发布于 2009-09-08 10:08:04
在c# a class is reference type中。这意味着,如果您创建了一个类的实例列表,然后又将这些实例添加到另一个列表中,那么它就是相同的项。每个列表将包含一个引用。因此,为了达到这个效果,是的,您可以使用IEnumberable来设置这些项目。
发布于 2009-09-08 10:07:01
我怀疑您不了解引用类型和值类型之间的区别,以及在C#中按值传递的真正含义。
假设Electrode是一个类,您可以修改它的实例的属性,这些更改将通过对同一对象的任何引用可见。
我强烈建议您在尝试开发大量生产代码之前,确保您对.NET类型系统有很好的了解。不了解正在发生的事情的后果可能是灾难性的。
下面是我关于这些主题的几篇文章:
..。但我建议你也买一本好的入门C#书。
https://stackoverflow.com/questions/1393101
复制相似问题