参考这样一段 CSharp 代码: public class Item { public Item AItem; } 编译通过,完全没有问题,但是如果把 class 改为 struct: public struct Item { public Item AItem; } 编译报错:error CS0523: 结构成员“Item.AItem”(属于类型“Item”)在结构布局中导致循环 这是由值类型和引用类型的性质不同所决定的。 在分配内存的时候,要确定分配的内存大小,就要确定其每一个成员的内存占用。 对于 class Item 成员,仅仅需要分配一个引用的内存而已,跟实际的 class Item 的内存占用无关;而对于 struct Item 成员,这时就需要确定 struct Item 的内存占用,struct Item 又要确定其成员的内存占用... 由此,以下的代码也将是错误的: public struct StructA { public StructB b; } public struct StructB { public StructA a; }
解决方案 »
- gridControl添加按钮列后怎样捕获按钮所在的行
- "委托签名必须在其形参表中包括隐藏的 this 参数"这句话什么意思?
- 关于winform中应用debug和console.write
- c#的WebService
- 关于如何用C#取得cookie的所有值的问题
- 急救.关于引用的问题.
- 怎么实现C和C#语言的交互
- 如何从类中传递一个数组出去?(通过属性从类中得到一个数组?)
- 我以前学过bc,不过不是很精通,现在不学vc而直接学c#行吗? 还c#有好用的盗版卖吗?c#对操桌系统有没有要求?98 2000 xp?
- winform DataGrid 一选就可以选中一整行,不是选中单元格。
- ★推荐★ Infragistics Netadvantage 2004 Vol1 For COM/WinForm/ASP.NET/Source 功能非常强大的控件集!!!
- ====大家讨论:帅哥,html控件的FileField的按钮两个字是“浏览...”,能不能换成别的内容?急====
http://community.csdn.net/Expert/topic/2895/2895734.xml?temp=.6542169
--------------------------------------------------------------------------------
在分配内存的时候,要确定分配的内存大小,就要确定其每一个成员的内存占用。 对于 class Item 成员,仅仅需要分配一个引用的内存而已,跟实际的 class Item 的内存占用无关;而对于 struct Item 成员,这时就需要确定 struct Item 的内存占用,struct Item 又要确定其成员的内存占用...
--------------------------------------------------------------------------------那这么说来,用结构岂不是会更占资源?
类在声明时,只创建引用,并保存在栈中,实例化时才会获得分配内存,在堆中占地方。
结构则在声明时就占了地方,这样会不会显得更占资源,虽然它是在栈中。
class是引用类型,在堆中分配内存,速度慢但有空间优势。
--------------------------------------------------------------------------------
在分配内存的时候,要确定分配的内存大小,就要确定其每一个成员的内存占用。 对于 class Item 成员,仅仅需要分配一个引用的内存而已,跟实际的 class Item 的内存占用无关;而对于 struct Item 成员,这时就需要确定 struct Item 的内存占用,struct Item 又要确定其成员的内存占用...
--------------------------------------------------------------------------------那这么说来,用结构岂不是会更占资源?
类在声明时,只创建引用,并保存在栈中,实例化时才会获得分配内存,在堆中占地方。
结构则在声明时就占了地方,这样会不会显得更占资源,虽然它是在栈中
但是他得速度要快!