Mar*_*k T 26 c# struct class value-type reference-type
在C#中是否可以使用具有类型类型的成员变量的Struct?如果是这样,信息存储在哪里,堆栈,堆,或两者?
Eri*_*ard 24
是的你可以.指向类成员变量的指针与结构的其余值一起存储在堆栈中,类实例的数据存储在堆上.
结构也可以包含类定义作为成员(内部类).
这是一些真正无用的代码,至少编译并运行以显示它是可能的:
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
MyStr m = new MyStr();
m.Foo();
MyStr.MyStrInner mi = new MyStr.MyStrInner();
mi.Bar();
Console.ReadLine();
}
}
public class Myclass
{
public int a;
}
struct MyStr
{
Myclass mc;
public void Foo()
{
mc = new Myclass();
mc.a = 1;
}
public class MyStrInner
{
string x = "abc";
public string Bar()
{
return x;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Ben*_*igt 13
类内容存储在堆上.
对类的引用(与指针几乎相同)与struct内容一起存储.存储结构内容的位置取决于它是局部变量,方法参数还是类的成员,以及它是否被闭包装箱或捕获.
归档时间: |
|
查看次数: |
13586 次 |
最近记录: |