C#中的"取消引用"变量

chr*_*892 1 .net c#

我在C#中有一些使用结构的代码:

ArrayList addrs = new ArrayList();
byte[] addr = new byte[8];
while (oneWire.Search_GetNextDevice(addr))
{
    addrs.Add(addr);
}
Run Code Online (Sandbox Code Playgroud)

在这个例子中,它中的每个元素ArrayList都与找到的最后一个设备相同,因为它看起来好像addr是通过引用传递出来的,而我只是将该引用复制到了ArrayList.

有没有办法"解除引用" addr只能提取它的价值?

我的评估也可能是不正确的,如果情况确实如此,请告诉我

谢谢!

Hen*_*man 5

如果addr是一个类变量(而不是一个结构),它会想象.

在这种情况下,Search_GetNextDevice()将一遍又一遍地填充相同的实例.

你可以用类似的东西来解决它

byte[] addr = new byte[8];
while (oneWire.Search_GetNextDevice(addr))
{
   addrs.Add(addr);
   addr = new byte[8];
}
Run Code Online (Sandbox Code Playgroud)

更新了byte[]信息