這兩種情況哪一種最正確?這種情況下rxBytes變量只被聲明?C#:我總是實例化一個新的引用類型變量嗎?
private void ParseRxData(RxMessage rxMessage) {
List<byte> rxBytes;
rxBytes = rxMessage.LengthBytes;
rxBytes.AddRange(rxMessage.Payload);
/* Do stuff with 'rxBytes' variable */
}
或者這種情況下,rxBytes變量被實例化?
private void ParseRxData(RxMessage rxMessage) {
var rxBytes = new List<byte>;
rxBytes = rxMessage.LengthBytes;
rxBytes.AddRange(rxMessage.Payload);
/* Do stuff with 'rxBytes' variable */
}
總之,是否有必要實例化一個變量,當它被賦值後立即被聲明?
我是一個相當新的C#/ OOP程序員,所以我很抱歉如果我沒有正確使用術語。
嗯...這並不像我想的那樣直截了當。看來使用任何一個塊都會導致問題。由於rxMessage.LengthBytes是RxMessage類中的List屬性,因此似乎C#將對rxMessage.LengthBytes的引用複製到rxBytes。所以當將rxMessage.Payload添加到rxBytes時,我也將它們添加到rxMessage.LengthBytes。有沒有什麼方法可以用「按值」設置等號?否則,我必須使用rxBytes.AddRange(rxMessage。LengthBytes),在這種情況下,我還必須先用「new」初始化rxBytes。 –
Oystein
@Oystein查看我的更新。 –