What is the Proper approach for Constructing a PhysicalAddress object from Byte Array
- by Paul Farry
I'm trying to understand what the correct approach for a constructor that accepts a Byte Array with regard to how it stores it's data (specifically with PhysicalAddress)
I have an array of 6 bytes (theAddress) that is constructed once.
I have a source array of 18bytes (theAddresses) that is loaded from a TCP Connection.
I then copy the 6bytes from theAddress+offset into theAddress and construct the PhysicalAddress from it.
Problem is that the PhysicalAddress just stores the Reference to the array that was passed in. Therefore if you subsequently check the addresses they only ever point to the last address that was copied in.
When I took a look inside the PhysicalAddress with reflector it's easy to see what's going on.
public PhysicalAddress(byte[] address)
{
this.changed = true;
this.address = address;
}
Now I know this can be solved by creating theAddress array on each pass, but I wanted to find out what really is the best practice for this.
Should the constructor of an object that accepts a byte array create it's own private Variable for holding the data and copy it from the original
Should it just hold the reference to what was passed in.
Should I just created theAddress on each pass in the loop