价值类型如何相互不同?

时间:2017-10-03 07:13:22

标签: c# struct heap value-type

如果两个不同结构的大小完全相同,那么它们在执行时有何不同?应该有一些关于它们不应该是什么类型的信息?

在堆栈中,我可以想象这些信息可以在不分配额外内存的情况下存储(在某些地方,如标题或其他内容)。怎么有In Heap,当struct 装箱时,它是否为其类型信息分配了额外的内存?

例如static HttpClient _client = new HttpClient(); public static async Task<Feeds> getJson() { using (var response = await _client.GetAsync("https://thingspeak.com/channels/301726/field/1.json")) { if (response.IsSuccessStatusCode) { var json = await response.Content.ReadAsStringAsync(); JObject obj = JObject.Parse(json); Feeds feed = null; foreach (var feedObj in obj["feeds"]) { feed = JsonConvert.DeserializeObject<Feeds>(feedObj.ToString()); double feild1 = feed.field1; } return feed; } } return null; } AnInt或其他类似结构的区别。

int

1 个答案:

答案 0 :(得分:3)

请记住,值类型没有继承。这意味着值类型的变量足以编码类型信息。您知道自己正在处理AnInt,因为您通过AnInt字段,属性或本地变量访问它。

反过来,这意味着在编译期间,编译器确切地知道调用该变量的方法等,并且(再次,因为没有继承)没有要考虑的虚拟调度。