我想了解什麼,接受關於字節數組它是如何將其存儲的數據(特別是與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