什么样的内存语义管理c#中的数组赋值?

Dar*_*ar1 4 .net c#

给出以下内容:byte [] sData; 和一个声明为private byte [] construct_command()的函数

如果我然后将construct_command()的结果分配给sData, 那么sData只指向函数返回的内容,或者为内存中的sData分配一些空间,并将函数结果的内容复制到其中?

Jar*_*Par 6

赋值将简单地指定sData以引用construct_command返回的实例.不会复制数据.

一般来说,CLR将世界分为两类

  • 值类型:这是从System.ValueType派生的任何内容.这些类型的值之间的分配按值发生,并且实质上导致位置之间的值的副本
  • 参考类型:其他任何东西.这些类型的值之间的分配仅使位置引用存储器中的不同对象.不会复制值

数组是CLR中的引用类型,因此不会导致复制基础值.

  • 不,因为垃圾回收器会知道仍在引用该数组。 (2认同)