gpt4 book ai didi

c# - 从另一个类继承的类是否比不使用继承的类在内存中更大?

转载 作者:行者123 更新时间:2023-11-30 15:39:35 25 4
gpt4 key购买 nike

假设我有两个类,class1 和 class2。

Class1继承自baseClass,看起来是这样的:

baseClass
{
private Int64 one;
protected Int64 two;
public Int64 three;
}

class1 看起来像这样

Class1 : baseClass
{
private Int64 four;
protected Int64 five;
public Int64 six;
}

class2 看起来像这样:

Class2
{
private Int64 one;
protected Int64 two;
public Int64 three;
private Int64 four;
protected Int64 five;
public Int64 six;
}

如果我要为每个类创建 10k 的数组,哪个会更大? class1 数组是否会更大,因为 class1 还会包含某种与 baseClass 相关的元数据?否则它们的属性是相同的,所以从技术上讲它们应该是相同的。

最佳答案

给定两个引用类型数组,即:

Class1[] a1 = new Class1[10000];
Class2[] a2 = new Class2[10000];

数组的大小将完全相同。数组的元素只是引用,引用总是相同的大小,无论它引用的是什么对象。引用在 32 位运行时为 4 个字节,在 64 位运行时为 8 个字节。

至于类实例,我希望它们的大小也相同。类实例本身仅保存该类的数据,以及少量其他数据,包括对该类类型的引用。类实例本身并不“知道”它是一个派生类。该信息由类型保存。

因此,Class1类型信息可能略大于Class2 的类型信息,但是实例 这两个类将占用相同数量的内存。

总而言之,使用继承自 baseClassClass1 会比使用 Class2 多花费一些字节,因为您有两个类的类型信息。但它实际上只是多了几个字节——不管类元数据的开销是多少。它不会为每个类实例花费任何额外费用。

关于c# - 从另一个类继承的类是否比不使用继承的类在内存中更大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10210236/

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