我想了解什么,接受关于字节数组它是如何将其存储的数据(特别是与PhysicalAddress)什么是正确的方法从字节数组构建PhysicalAddress对象
构造正确的处理方法我有一个6字节的数组(地址),构造一次。
我有一个从TCP连接加载的18字节(theAddresses)源数组。
然后,我将6位从地址+偏移量复制到地址中,并从中构建PhysicalAddress。
问题是PhysicalAddress只是存储的引用中传递的阵列。因此,如果您随后检查它们永远只能指向在复制的最后一个地址的地址。
当我接过来一看在带有反射器的PhysicalAddress中,很容易看到发生了什么。
public PhysicalAddress(byte[] address)
{
this.changed = true;
this.address = address;
}
现在我知道这可以通过在每次通过创建theAddress阵列来解决,但我想找出真正是我们的最佳实践。
- 应该接受字节数组对象的构造函数创建它自己的私有变量用于保存数据,并从原来的
- 复制它应该只是保持参考一下被通过。
- 我应该只是在循环中的每个通道创建地址
这不是我的构造函数,它是.NETFramework 2.0的一部分,3.5是相同的。 (system.net.networkinformation) – 2010-04-14 06:19:06
@Paul:哇,这很糟糕。好吧,我想我回答了你的“最佳实践”问题 - 但是当提出这样的课程时,你必须自己做防御性复制,基本上是:( – 2010-04-14 06:32:43