C#中的Undeclare变量

时间:2010-07-29 07:56:22

标签: c#

是否可以在C#中取消声明变量?如果是这样,怎么样?

6 个答案:

答案 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";
}

这也可以作为程序员考虑这些未使用的参数的文档。