C#如何把一个对象置成初始化时的状态?

bartooon 2009-03-02 02:11:04
比如有个TestClass和使用它的类CUser

class CUser
{
public TestClass tObj;
public CUser
{
tObj = new TestClass();
}
public SetInitial()
{
tObj = new TestClass();
}
// other member variables and functions
}

在其中成员函数SetInitial中,需要对tObj进行初始化(还原到初始状态)
直接的方法是再new出一个TestClass对象赋给tObj
但这样多次调用SetInitial后,程序使用的内存会大大增加
不知合理的SetInitial函数应该怎么写?
(TestClass可能不可修改
相应的C++代码大概是delete tObj; tObj = new TestClass();)
...全文
376 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaozhiqiang0124 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 uncleson88 的回复:]
tObj.dispose() 就等同于 C++ 里的 delete tObj 吧~~~
如有必要也可以强行垃圾回收
GC.Collect(); GC.WaitForPendingFinalizers();
[/Quote]
同意8楼的看法
uncleson88 2009-03-02
  • 打赏
  • 举报
回复
tObj.dispose() 就等同于 C++ 里的 delete tObj 吧~~~
如有必要也可以强行垃圾回收
GC.Collect(); GC.WaitForPendingFinalizers();
birdlonger 2009-03-02
  • 打赏
  • 举报
回复
那就让有权限的哥们给你提供初始化接口..
Mr_Long 2009-03-02
  • 打赏
  • 举报
回复
实例化一个全局变量,哪儿要用哪儿给它赋值
不用就是初始状态嘛!
bartooon 2009-03-02
  • 打赏
  • 举报
回复
并且如果用C++
delete tObj;
tObj = new TestClass();
是不用修改TestClass的内容的
devilli 2009-03-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hbxtlhx 的回复:]
你直接New一个是很省事,但对系统来说比执行几个简单的赋值要复杂的多。

你可以写一个类似Initialize的方法,每次需要重置的时候调用一下函数来把所有的状态值复原。这样程序执行起来会很轻松。
[/Quote]
有理
bartooon 2009-03-02
  • 打赏
  • 举报
回复
但是TestClass这个类我无法操作,没有更改的权限
北京的雾霾天 2009-03-02
  • 打赏
  • 举报
回复
你直接New一个是很省事,但对系统来说比执行几个简单的赋值要复杂的多。

你可以写一个类似Initialize的方法,每次需要重置的时候调用一下函数来把所有的状态值复原。这样程序执行起来会很轻松。
天乐 2009-03-02
  • 打赏
  • 举报
回复

class CUser
{
public TestClass tObj;
public CUser
{
tObj = new TestClass();
}
public SetInitial()
{
if(tObj == null)
tObj = new TestClass();
}
// other member variables and functions
}

111,126

社区成员

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

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

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