菜鸟的困惑,关于引用类型和集合。

DOS6 2003-10-17 12:16:06
添加菜单项时
MainMenu Menu_main=new MainMenu();
MenuItem item=new MenuItem("New");
Menu_main.MenuItems.Add(item);
this.Menu=Menu_main;
我的问题是,菜单项item只是局部变量,把主菜单和它相关连,它在出这个
函数时不是出了作用域了,空间会被回收。而实际上菜单依然可以使用它。
树控件的node也一样。
大家给我解释一下吧,谢谢
...全文
35 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
DOS6 2003-10-19
  • 打赏
  • 举报
回复
大家能不能给我一个明确的答案
DOS6 2003-10-17
  • 打赏
  • 举报
回复
我觉得应该是在Add(item)中添加了一份拷由,在Add时在里面new 了一个实例,
而item本身是局部变量应该就会被回收。
Jacode 2003-10-17
  • 打赏
  • 举报
回复
基本上,在C#的语言上讨论这些挺难的,因为它把大部分隐藏起来了不用你去了解.如果你想弄清楚,最好看看C++.
简单的说,用new 申请的是指针,如果你不明确删除它的话,它一直都在那的.而C#靠一个垃圾垃圾回收机制自动回收new分配的内存.
DangerousWang 2003-10-17
  • 打赏
  • 举报
回复

Menu_main.MenuItems.Add(item);
// 这个函数应该是增加了一份实例的拷贝
henryfan1 2003-10-17
  • 打赏
  • 举报
回复
看一下关于栈,堆

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧