是否可以在C#中取消声明变量?如果是这样,怎么样?
答案 0 :(得分:10)
关闭包含变量声明的范围(用'{'引入):
int c=0;
{
int a=1;
{
int b=2;
c=a+b;
} // this "undeclares" b
c=c+a;
} // this "undeclares" a
答案 1 :(得分:4)
你没有注意C#中的未定义(我认为你的意思是不分配,不是吗?)或任何其他.Net语言,垃圾收集器负责取消分配与变量相关的内存。
对于非托管资源(字体,数据库连接,文件等),您需要显式调用Dispose方法或将变量放在using块中。
有关.Net垃圾收集器的更多信息:http://www.csharphelp.com/2006/08/garbage-collection/
答案 2 :(得分:1)
你没有 - 当变量超出范围或者没有更多的引用时,它会自动被垃圾收集。
为什么你要明确地这样做呢;背景是什么?您很可能只是使用新的变量名称,或者将相关的代码部分重构为新函数。
答案 3 :(得分:1)
如果对象是 IDisposable ,您可以在using
块中使用它们。在其他情况下,我会选择Luther
提到的内容。
using (Car myCar = new Car())
{
myCar.Run();
}
答案 4 :(得分:0)
我不认为有这样的东西可以解释对象i .Net。如果您的对象使用需要清理的资源,则应实现IDisposable接口。否则垃圾收集器会处理所有事情。
答案 5 :(得分:0)
我认为现有语言不可能。一个看似合理的情况是:
void doSomething(String objectId) {
BusinessObject obj = findBusinessObject(objectId);
// from this point on the objectId should not be used anymore
undef objectId;
// continue using obj ...
}
另一种情况是从接口实现某个方法,并且您希望确保不使用其中一个参数,尤其是在长方法中。
Object get(int index, Object defaultValue) {
undef index, defaultValue;
return "constant default value";
}
这也可以作为程序员考虑这些未使用的参数的文档。