gpt4 book ai didi

c# - 为什么要在 C# 中再次分配数组中的每个元素

转载 作者:行者123 更新时间:2023-11-30 01:22:23 24 4
gpt4 key购买 nike

下面是我写的代码Calc[] 计算器 = new Calc[10];calculators[0].AddToSum(10);(写了相应的类和方法)。但是我得到了“对象引用未设置到对象的实例”异常。然后通过一些研究,我通过执行以下操作删除了异常。

for (int i = 0; i < 10; i++)
{
calculators[i] = new Calc();
}

有人能解释一下为什么我们需要再次分配内存,这与在 c/c++ 中不同。这就是我在 C++ 中的做法:

Calculator *calc=new Calculator[10]//I know I need to check for std::bad_alloc exception
calculators[0].AddToSum(10);
delete[] calc;

最佳答案

在C#中,有引用类型,也有值类型。类是引用类型。当您创建一个引用类型的变量时,您创建的是一个引用,而不是一个对象。引用的默认状态为空。如果你想让它引用一个对象,你必须用 new 明确地初始化它,或者从另一个初始化的引用中赋值。

C++ 没有这种区别。每种类型都是值类型(尽管您也可以创建对任何类型的引用)。当您创建一个值类型的变量时,您就是在创建一个对象。

关于c# - 为什么要在 C# 中再次分配数组中的每个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16421295/

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