gpt4 book ai didi

c# - 什么样的内存语义支配 C# 中的数组赋值?

转载 作者:太空狗 更新时间:2023-10-30 00:04:15 29 4
gpt4 key购买 nike

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

如果我要将 construct_command() 的结果分配给 sDatasData 会直接指向从函数返回的内容,还是会在内存中为 sData 分配一些空间并将函数结果的内容复制到其中?

最佳答案

赋值将简单地分配 sData 以引用 construct_command 返回的实例。不会发生数据复制。

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

  • 值类型:这是派生自 System.ValueType 的任何类型。这些类型的值之间的分配按值发生,并且本质上会导致位置之间的值副本
  • 引用类型:任何其他。这些类型的值之间的分配只会导致该位置引用内存中的不同对象。没有值的复制发生

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

关于c# - 什么样的内存语义支配 C# 中的数组赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1266591/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com