|
|
1
2
假设sdata是一个局部变量,它将位于堆栈中,并且将 参考 方法返回的数组。方法不返回数组本身的内容,而是返回对数组的引用。 在.NET中,数组是第一类对象,所有数组类型变量实际上都是引用。 |
|
|
2
6
该分配将简单地分配sdata以引用construct_命令返回的实例。不会复制数据。 一般来说,clr将世界分为两种类型
数组是CLR中的引用类型,因此不会导致基础值的复制。 |
|
3
3
数组是引用类型,这意味着实际数组是在堆上实例化的(可能是由construct_command()实现的),函数返回对数组的引用,并将其存储在(本地变量)sdata中。 因此,这实际上不是关于内存语义(返回值可以为空),而是关于引用类型的复制语义。这种情况完全等于,例如:
更直截了当一点:在.NET中根本不能传递数组,只能传递、复制和分配对数组的引用。 |
|
|
4
2
sdata将指向从函数返回的内容。C中的数组是引用类型,这意味着从另一个数组分配一个数组只是复制引用,而不是分配新数据。 |
|
|
5
2
数组是引用类型,因此只复制引用。没有内容操作。 |
|
|
6
0
|
|
7
0
尽管芮成华的回答总体上很好,但我确实认为其中的一部分是错误的。从堆栈内存分配数组,然后通过引用访问,这是没有意义的(非常不一致)。如果这是真的,那么底层内存可以从传递引用的任何方法的底层释放。 我相信当亨克·霍尔特曼非常直接和明确地说:
谢谢你亨克的评论,我认为这是一个关键部分,否则会错过(并与)接受的答案相矛盾。 (我本来会回复一条评论,但我没有足够的回复点,我认为重要的是要指出接受的答案有这个问题,我需要在这里添加一条新的评论。)也许管理员可以从答案中删除对“局部变量,它将在堆栈中”的引用。 |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |