怎样取得某个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