gpt4 book ai didi

flutter - Dart 中的 int 类型是值类型还是引用类型?

转载 作者:行者123 更新时间:2023-12-03 02:39:59 26 4
gpt4 key购买 nike

Dart 中的 int 类型的默认值为 null。 null 是 Null 类类型的对象。 (根据 Dart 文档)。此外,在 Dart 中,int 派生自 Object 类。
因此,

int i = 10;
print(i.runtimeType is Object); // returns true
这让我相信 int 不像其他语言(例如 C#)中那样是值类型,而是引用类型。
如果我是对的,那么—— int i = 10;表示 i 是一个引用变量,保存对 int 对象 10 的引用。
这样对吗?如果没有,如果共享文档中描述的链接,我将不胜感激。
直到现在,我一直找不到任何正确的解释,因此我自己得出了这个结论。
谢谢。

最佳答案

是的,Dart 的int类型是“引用类型”。
Dart 根本没有值类型,所有值都是一个类的实例,包括整数。 (至少在技术上,函数值使得它们的类很难被看到。)
整数是不可变的,并假装是规范化的。
如果abint值和a == b,那么identical(a, b)保证为真,所以ab是同一个对象,但它们看起来是否相同它们确实是同一个对象,或者因为identical只是作弊而对整数执行==
这意味着您可以在很大程度上将int视为“值类型”。无论是在赋值或参数传递时复制,还是传递对同一对象的引用,都无法区分。该语言确保了这一点,因为它允许实现做任何更有效的事情。
在实践中,一些整数在函数内被拆箱,一些整数作为值存储在引用本身中,一些是真实的对象。
(这也是您不能将Expandoint一起使用的原因之一)。
(在当前的 Dart 语言中,所有类型注释都是可为空的,这意味着您可以将null分配给int x;。随着即将推出的 Null Safety 功能,这种情况发生了变化。如果您这样编写类型,它们将只能为空,因此int x = 1;不会接受null值,但int? x;会。而且null也是一个对象,类Null的唯一实例。)

关于flutter - Dart 中的 int 类型是值类型还是引用类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62675194/

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