gpt4 book ai didi

.net - .NET 对象创建是 "ex nihilo"吗?

转载 作者:行者123 更新时间:2023-12-04 02:23:35 25 4
gpt4 key购买 nike

我正在阅读 prototype-based语言,我想到了这个疑问:

.NET Object Creation ex nihilo(“从无到有”)是否允许从头开始创建新对象?或者,.NET 对象创建是基于从现有对象(即 Object)的克隆作为新对象创建的克隆原型(prototype)?

最佳答案

.Net 中最基本的对象没有用户数据,只有一些内部平台有关其类型和实际数据在内存中位置的信息。从用户(开发人员)的角度来看,他们“只是存在”,他们只是在“身份”上有所不同。他们的类(class)不能以任何方式扩展。我认为克隆任何东西没有任何意义。

更复杂的对象是从某物派生出来的,最终是从基础对象派生出来的。 .Net 中没有复制构造和深度复制语义,因此在非基本对象级别,克隆任何东西仍然没有意义。

在元数据级别,每个对象都携带有关它属于哪个类的信息。元信息是共享的,同一类的所有对象都指向共享的元信息。克隆任何东西仍然没有意义。

因此,如果对象创建是以原型(prototype)克隆方式完成的,我会感到非常惊讶。我不能绝对肯定地知道,但我敢打赌它不是。我也很确定对象创建只是分配小内存块,并且可能在其 header 内设置一些指针。

如果有人 *ngen*s 一些代码并将其反汇编以查看 new() 运算符的工作原理,这当然是可验证的 :)

关于.net - .NET 对象创建是 "ex nihilo"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12734263/

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