C#如何创建类的实例?

5Yr*_*DBA 9 .net c#

public class MyClass
{
    int i = 0;
    string str = "here";
    MyStruct mystruct;
    B b;
    ArrayList myList = new ArrayList(10);

    public MyClass()
    {
    }
    ....
}

public struct MyStruct
{
    public int i;
    public float f;
}

public class B
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

想要了解如何在后台创建类的实例.当这句话

 MyClass myClass = new MyClass();
Run Code Online (Sandbox Code Playgroud)

被评估.背景会发生什么?我的以下陈述是否正确(对于32位OS机器)?

  1. 将创建一个内存空间并将其引用为myClass;
  2. 在上面的内存空间中,4个字节用于值int i;
  3. 在上述存储空间内,4个字节用于参考string str; 该实际值str存储在其他位置(哪里?)
  4. 在上面的内存空间中,8个字节用于值MyStruct mystruct(因为MyStruct是8个字节);
  5. 在上述存储空间内,4个字节用于B b对象的引用; b对象的内存将在实例化时在其他地方分配;
  6. 在上述存储空间内,4个字节用于参考ArrayList myList; 实际的内存空间ArrayList myList在其他地方分配,并在此处引用myList;
  7. 来自上面的内存空间的另外4或8个字节用于对象元数据;
  8. ...;

Ree*_*sey 2

你已经有了基本的想法。除了您所包含的内容之外,其实际细节是特定于实现的。但是,对于您的几点:

3) 实际的字符串通常存储在它自己的内存空间中,就像任何其他类一样。但是,由于在这种情况下您使用的是字符串文字,因此它很可能位于字符串内部池中,(我相信)存储在大型对象堆中。有关字符串驻留的详细信息,请参阅String.Intern。(如果您动态分配字符串,而不是使用文字,则该字符串将存储在应用程序的普通托管堆中。)