这两种情况哪一种最正确?这种情况下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查看我的更新。 –