Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有类字段的结构_C#_.net_Struct - Fatal编程技术网

C# 具有类字段的结构

C# 具有类字段的结构,c#,.net,struct,C#,.net,Struct,我知道这些结构不会保存在堆中。该类保存在堆中。 这很清楚,但是如果结构包含某个类的字段,它将保存在哪里? 例如: class TestClass { public string Name; } struct MyStruct { public TestClass myClass; } 值类型和引用类型的存储是实现细节,它们不保证在CLR实现或未来版本的实现中保持固定 引用MS规范: 在桌面CLR上的C#的Microsoft实现中,值类型 当值是局部变量或 临时变量,它不是la

我知道这些结构不会保存在堆中。该类保存在堆中。 这很清楚,但是如果结构包含某个类的字段,它将保存在哪里? 例如:

class TestClass
{
    public string Name;
}

struct MyStruct
{
    public TestClass myClass;
}

值类型和引用类型的存储是实现细节,它们不保证在CLR实现或未来版本的实现中保持固定

引用MS规范:

在桌面CLR上的C#的Microsoft实现中,值类型 当值是局部变量或 临时变量,它不是lambda或 匿名方法,并且方法体不是迭代器块,并且 抖动选择不注册该值

在你的例子中,答案是。。。视情况而定

我建议大家阅读一下Eric Lippert在上的博客文章,了解更多信息