下面是我写的代码
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/