gpt4 book ai didi

c# - Enumerable.Repeat 用于引用类型对象的初始化

转载 作者:太空狗 更新时间:2023-10-29 19:55:36 25 4
gpt4 key购买 nike

我对 Enumerable.Repeat 函数有疑问。

如果我要上课:

class A
{
//code
}

然后我将创建一个数组,该类型的对象:

A [] arr = new A[50];

接下来,我将要初始化这些对象,调用 Enumerable.Repeat:

arr = Enumerable.Repeat(new A(), 50);

这些对象在内存中的地址是否相同?如果我想检查他们的哈希码,例如以这种方式:

bool theSameHashCode = questions[0].GetHashCode() == questions[1].GetHashCode();

这将返回 true,如果我更改一个对象属性,所有其他对象也会更改它。

所以我的问题是:这是初始化引用类型对象的正确方法吗?如果不是,那么什么是更好的方法?

最佳答案

以这种方式使用 Enumerable.Repeat 只会初始化一个对象,并在每次迭代结果时返回该对象。

Will those objects have the same address in memory?

只有一个对象。

要实现你想要的,你可以这样做:

Enumerable.Range(1, 50).Select(i => new A()).ToArray();

这将返回一个包含 50 个类型为 A 的不同对象的数组。

顺便说一下,GetHashCode() 返回相同值的事实并不意味着对象在引用上是相等的(或就此而言只是相等)。两个不相等的对象可以具有相同的哈希码。

关于c# - Enumerable.Repeat 用于引用类型对象的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44936939/

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