日期:2014-05-20  浏览次数:20725 次

怎样取得某个Class自身的实例名称?
e.g.
public   class   classA()
{
classB   test=new   classB();
}

public   class   classB()
{
//希望在这里可以得到 "test "这个名称,   "test "是在classA里面创建的实例
}

------解决方案--------------------
好像不行吧
------解决方案--------------------
这样子这个不可能吧??除非
public class classB()
{
private string myname = " ";
public classB(string _myname)
{
myname = _myname;
}
}

public class classA()
{
classB test=new classB( "test ");
}

------解决方案--------------------
楼上的可行!
------解决方案--------------------
classB test = new classB();
classB test1 = test;
classB test2 = test;

同一个实例,不同的变量,那该取那个?
------解决方案--------------------
楼主的想法不用实现。
------解决方案--------------------
test.tostring();
------解决方案--------------------
也不是很現實
------解决方案--------------------
如果你有这种需求的话,只有两种情况:
1、刚学编成
2、代码逻辑混乱
------解决方案--------------------
.NET 刚学,但是按照我原来的感觉,实例是有解释器维护的,所以代码本身无法获得的。
原来就有好多人问这问题,没想到到了.NET还是有人问,这种应用需求真的这么大???
看到一个这帖子,希望有帮助:
http://topic.csdn.net/t/20031025/13/2393780.html
------解决方案--------------------
lz要明白对象是没有名称的,你说的名称是变量的名称。
------解决方案--------------------
试试在构造函数里给一个值,每次实例的时候就把实例名赋给这个值。用的时候读这个值,来确定实例名。
------解决方案--------------------
哦,明白你的需求了,就像游戏里面的保存一样。如果你对内存操作比较熟练,可以参考一下开发游戏时经常用的方式。其实这样的需求完全不需要用你想的那种方法实现,为什么你要知道每个对象实例的变量名呢???如下:

//定义窗体对象实例的集合
public Myforms;


//建立窗体对象实例的方法
function NewForm(){
。。。
。。。
//把当前的新窗体添加到集合中
Myforms.add
}

//保存当前窗口的所有窗体
function SaveForms(){
//遍历窗体对象集合
for each form in Myforms{
//保存窗体信息到XML
Save Form.width
... ...

}

}


//程序启动时加载窗体的模块
function LoadForm(){
//读取XML
LoadXML
//加载新窗体
NewForm()

}
------解决方案--------------------
其实加载的时候和做MDI程序是一样的,关键是你的Newform模块要写得好。
------解决方案--------------------
仅仅知道Location, Size是不能还原Form的吧?
而且lz要的应该是类型名,而不是对象名。
------解决方案--------------------
楼主你不可能吧所有实例的所有状态都保存吧?你只是需要记录一些重要实例的关键状态就可以了,具体那些实例重要,那些状态关键是看你的需求而定的,将实例的完整类名和关键状态信息保存到XML中,提取的时候用反射重新构建起来就可以了
------解决方案--------------------
up