c# – 如果类有结构变量,那么它将被存储在哪里?

c# – 如果类有结构变量,那么它将被存储在哪里?,第1张

概述已经清楚的是,由于结构是c#中的值类型,它们存储在堆栈上,而类对象存储在堆上(它的引用,当然存储在堆栈中). 警告:(是的,这可能并非总是如此.感谢@Jon进行更正)但在大多数情况下,是的! 但是,其成员类型为struct的第一类呢?现在,内存模型将如何? 顺便说一句,我如何检查某个对象是否位于堆栈或堆中? 好的.一些假设: >此类是函数内的本地类. > struct是一个成员而不是一个变量. ( 已经清楚的是,由于结构是c#中的值类型,它们存储在堆栈上,而类对象存储在堆上(它的引用,当然存储在堆栈中).

警告:(是的,这可能并非总是如此.感谢@Jon进行更正)但在大多数情况下,是的!@H_403_3@

但是,其成员类型为struct的第一类呢?现在,内存模型将如何?@H_403_3@

顺便说一句,我如何检查某个对象是否位于堆栈或堆中?@H_403_3@

好的.一些假设:@H_403_3@

>此类是函数内的本地类.
> struct是一个成员而不是一个变量. (感谢更正.)@H_403_3@@H_502_13@解决方法 类本身将是一个引用类型,因此它的实例将保留在堆上.

作为结构的属性是实例(即对象)的组成部分,因此也将保留在堆上,就像该对象的int和enum属性一样.@H_403_3@

注意:不会引用struct属性,就像没有对int和enum属性的引用一样.@H_403_3@@H_502_13@ @H_502_13@ 总结

以上是内存溢出为你收集整理的c# – 如果类有结构变量,那么它将被存储在哪里?全部内容,希望文章能够帮你解决c# – 如果类有结构变量,那么它将被存储在哪里?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1247791.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存