首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

控件是引用类型吗?这个对象怎么固定

2012-07-08 
控件是引用类型吗?这个对象如何固定?ListBox listbox_变化 new ListBox()ListBox listbox2 listbox_

控件是引用类型吗?这个对象如何固定?
ListBox listbox_变化 = new ListBox();

ListBox listbox2 = listbox_变化;

由于功能需求,在程序中,变量“listbox_变化”所指向的对象随时可能变化,请问,如何保证listbox2不随着“listbox_变化”的变化而变化。

[解决办法]
既然这样你干嘛不直接让listbox2引用一个新的对象
[解决办法]

C# code
ListBox listbox_变化 = new ListBox();ListBox listbox2 = listbox_变化;listbox_变化 = new ListBox();//listbox_变化 变成新的,listbox2 是原来的
[解决办法]
listbox2重新new一个,就行了。
[解决办法]
说白了,“listbox_变化”随便赋值,“listbox2” 都不会变,但如果“listbox_变化”未重新赋值前内部的数据修改了,“listbox2”也会看到修改后的数据
[解决办法]
控件是类,当然是引用类型,不随着变化那就新new一个实例呗
[解决办法]
好奇怪的问题,根本就不会变化。你的问题根本就不成立。
好比
int i = 3;
int j = i;
i = 5;
j会变化么?

还引用类型。你连最基本的C#语法都没学会呢。
[解决办法]
这个都是数据源的变动问题,
你控制好数据源就行了
[解决办法]
探讨
引用:

好奇怪的问题,根本就不会变化。你的问题根本就不成立。
好比
int i = 3;
int j = i;
i = 5;
j会变化么?

还引用类型。你连最基本的C#语法都没学会呢。

上面有人说控件是引用类型..

[解决办法]
ListBox listbox_变化 = new ListBox();

ListBox listbox2 = listbox_变化;

有些不懂,你的目的就不是让两个变量的值一样吗?
[解决办法]

从堆栈看 引用和值 你会知道明显区别
主要看数据的变化和存活周期
系统并不知道你这个东西是不是长久的
默认都会分配堆上,至于接下来会根据你的调用去重新处理


[解决办法]
探讨
引用:

好奇怪的问题,根本就不会变化。你的问题根本就不成立。
好比
int i = 3;
int j = i;
i = 5;
j会变化么?

还引用类型。你连最基本的C#语法都没学会呢。

上面有人说控件是引用类型..

[解决办法]
引用类型1=引用类型2;
这个时候浅拷贝,引用类型1 指向的引用类型2的地址即(栈空间存放的地址)

引用类型1 =new 引用类型1();
这个时候会为这个引用类型分配一个小堆来存放数据,同时用栈空间的地址指向它

所有的值类型(非装箱过)的数据全部存放在栈空间里面

你的问题的话,有两种解决办法
ListBox listbox_变化 = new ListBox();
ListBox listbox2 = listbox_变化;

一个是做深拷贝,即递归遍历所有listbox_变化的property来赋值给listbox2
另一个办法是,
先给listbox2 赋值 listbox_变化
然后在给 listbox_变化=new ListBox();即可
2楼说的不错

[解决办法]
探讨
引用:
引用:

好奇怪的问题,根本就不会变化。你的问题根本就不成立。
好比
int i = 3;
int j = i;
i = 5;
j会变化么?

还引用类型。你连最基本的C#语法都没学会呢。

上面有人说控件是引用类型..


已经和你说了,根本和“引用”无关。你连最基本的赋值语句都不懂。

[解决办法]
读LZ的帖子好绕口!
[解决办法]
用一个Statistic变量 ListBox statisticLB
在 ListBox listbox_变化 = new ListBox(); 时 statisticLB = listbox_变化, 每new一次,按照是否需要变动statisticLB的条件来修改statisticLB变量。
ListBox listbox2 直接取statisticLB变量。

或则楼主希望的是 “单例模式”?

热点排行