C# 在类中声明新数组时,内存分配是否存在差异?
类myObjectA和myObjectB的内存使用/分配是否存在差异 例如,如果我不想为该类的每个对象添加速度,那么在类中使用新的float[2]是否会占用更多内存 另外,“itemA”的内存使用情况如何?如果我创建了一个新的“myObjectA”对象,但我没有添加一个新的itemA,也就是它的null,它仍然使用内存吗 如果我创建一个新的“ItemA”(myItem),然后创建一个新的“myObjectA”(myObject),它将使用多少内存,C# 在类中声明新数组时,内存分配是否存在差异?,c#,memory,C#,Memory,类myObjectA和myObjectB的内存使用/分配是否存在差异 例如,如果我不想为该类的每个对象添加速度,那么在类中使用新的float[2]是否会占用更多内存 另外,“itemA”的内存使用情况如何?如果我创建了一个新的“myObjectA”对象,但我没有添加一个新的itemA,也就是它的null,它仍然使用内存吗 如果我创建一个新的“ItemA”(myItem),然后创建一个新的“myObjectA”(myObject),它将使用多少内存,myObject.item=myItem我假设它
myObject.item=myItem代码>我假设它是一个指向(myItem)作为引用的指针,但该指针将使用多少内存?将其保留为null有什么区别吗
示例C#
在创建时,这两个类的内存使用情况有所不同。正如您所指出的,myObjectA
将有未分配的变量,而myObjectB
将为这些变量分配数组
一旦将对象分配给myObjectA
中的变量,指针将设置为这些对象,内存使用将由这些数组的大小决定。假设您打算将它们完全像在myObjectB
中一样创建为float[2],那么myObjectA
和myObjectB
将使用相同的内存量
至于未赋值变量的大小,虽然指针不会指向内存中的对象,但指针本身仍然存在,并且将具有操作系统的默认指针大小
有关指针大小,请参见
最后一个问题,视情况而定。通过使这个类成为泛型类,您试图实现什么?我建议对此单独问一个问题。创建时这两个类的内存使用情况有所不同。正如您所指出的,myObjectA
将有未分配的变量,而myObjectB
将为这些变量分配数组
一旦将对象分配给myObjectA
中的变量,指针将设置为这些对象,内存使用将由这些数组的大小决定。假设您打算将它们完全像在myObjectB
中一样创建为float[2],那么myObjectA
和myObjectB
将使用相同的内存量
至于未赋值变量的大小,虽然指针不会指向内存中的对象,但指针本身仍然存在,并且将具有操作系统的默认指针大小
有关指针大小,请参见
最后一个问题,视情况而定。通过使这个类成为泛型类,您试图实现什么?我建议就此单独提问
public class itemA
{
Color color = Color.FromArgb(255,0,0); //3byte
}
itemA myItem = new itemA();
public class myObjectA
{
float[] pos; // ?byte
float[] velocity; // ?byte
itemA item; // ?byte
}
myObjectA myObject0 = new myObjectA();
public class myObjectB
{
float[] pos = new float[2]; // 8byte
float[] velocity = new float[2];// 8byte
itemA item; //?byte
}
myObjectB myObject1 = new myObjectB();