C#:我是否总是实例化一个新的引用类型变量?

奥斯坦

这两种情况中哪一种最正确?这种情况下仅声明了rxBytes变量?

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程序员,因此,如果我没有正确使用术语,我深表歉意。

斯坦利

简而言之,在声明变量后立即为其赋值时,是否有必要实例化该变量?

否-实际上,如果您初始化rxBytes为new List<byte>,然后用覆盖该变量rxMessage.LengthBytes,那么您创建的列表将永远不会使用,并将被垃圾回收。您似乎为它分配了一个List<byte>正义,因此您可以使用var不必要正义您的第一个代码块是正确的方法。

你也可以做

var rxBytes = rxMessage.LengthBytes;

但是在功能上,在一行中声明变量与在另一行中为其赋值之间没有区别。

有什么办法设置“按值”等号?

对于引用类型,“值”一个引用,但是如果您只希望新变量引用列表副本,则可以执行

var rxBytes = new List<byte>(rxMessage.LengthBytes);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 C++ 中,我如何声明一个泛型类型的变量,然后再实例化它?

为Dapper提供一个要映射到的类实例,而不是总是实例化一个新的实例?

一个对象引用一个类B的另一个对象作为其实例变量的类A的对象,是否也指向类型B的对象?

我应该实例化一个新模型吗?

C#| 使用另一个实例的属性初始化新对象的语法

实例化一个新对象或更改现有对象C#的值

在 C# 中是否可以用一个值实例化一个类?

在C#中,是否可以保证任何给定线程都可以看到从另一个线程到引用类型变量的值所做的更新?

如何根据要实例化的类的变量类型来实例化一个类

C# 从类型 FullName 创建一个类的实例

如何正确实例化一个类以在其他类中引用。统一 C#

C#将指向引用类型的变量分配给另一个变量,后者中存储了什么?

为什么performSegueWithIdentifier总是创建一个新实例?

实例化一个TypeVar类型

实例化一个新脚本?

attr_accessor 是否创建了一个允许访问实例变量的新变量?

检索类类型,并实例化一个新的相同类型

Python可以实例化一个变量并同时返回其值或引用吗?

将参数化类型实例引用到其原始类型与使用原始类型引用另一个原始类型实例之间的区别?

我应该总是使用 shared_ptr 来创建一个类实例(而不是新的)吗?

打印变量时,我总是收到一个盒子

在C#中是否有这样一个运算符来引用第一个变量来表示“ AndAlso”?

测试是否可以使用Activator实例化一个类类型而不实例化它

是否将在C#中为类的每个实例创建一个属性实例?

将引用类型从一个C#复制到另一个C#

当我实例化一个新类时使用 .call

我可以实例化一个变量,但以后再给它赋值吗?

我是否总是需要在angular2中声明一个变量才能进行更改?

为什么必须创建一个新的全局变量来引用“ exec”中的当前类实例?