C# C语言中未声明的变量#

C# C语言中未声明的变量#,c#,C#,是否可以在C#中取消声明变量?如果是,怎么做?您不知道-当一个变量超出范围或不再存在对它的引用时,它会自动进行垃圾收集 无论如何,你为什么要明确地这样做;背景是什么?最有可能的情况是,您应该简单地使用一个新的变量名,或者将相关的代码部分重构为一个新函数。在C#(顺便说一下,我想您的意思是不分配)或任何其他.Net语言中,垃圾收集器负责不分配与该变量相关的内存 对于非托管资源(字体、数据库连接、文件等),您需要显式地调用Dispose方法,或者将变量放置在using块中 有关.Net垃圾收集器的详

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

您不知道-当一个变量超出范围或不再存在对它的引用时,它会自动进行垃圾收集


无论如何,你为什么要明确地这样做;背景是什么?最有可能的情况是,您应该简单地使用一个新的变量名,或者将相关的代码部分重构为一个新函数。

在C#(顺便说一下,我想您的意思是不分配)或任何其他.Net语言中,垃圾收集器负责不分配与该变量相关的内存

对于非托管资源(字体、数据库连接、文件等),您需要显式地调用Dispose方法,或者将变量放置在using块中

有关.Net垃圾收集器的详细信息:

关闭包含变量声明的作用域(由“{”)引入:

int c=0;
{
 int a=1;
 {
  int b=2; 
  c=a+b;
 } // this "undeclares" b
 c=c+a;
} // this "undeclares" a

我不认为存在取消定义对象I.Net这样的事情。如果您的对象使用需要清理的资源,它应该实现IDisposable接口。否则垃圾收集器将处理所有事情。

如果对象是IDisposable,您可以在
使用
块中使用它们。在我会用
Luther
提到的那些案例中的第一个

using (Car myCar = new Car())
{
    myCar.Run();
}

我认为这在当前的语言中是不可能的。一种可能的情况是:

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

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

删除声明这些参数的代码行。您能描述一下您的场景吗?为什么您认为您需要取消声明变量?您正在处理非托管资源吗?您正在创建许多对象并保留它们的引用吗你是否有任何性能问题?你来自C++吗?你能清楚地定义“un申报”这个词对你意味着什么吗?因为我不知道什么是“未声明”,意思是动词。我知道什么是“未声明的局部变量”。is--一个您打算声明但忽略了声明的局部变量。未声明的局部变量在C#中是一个错误,但在某些语言中是允许的,如VBScript。我就是搞不懂动词形式的含义。您能澄清一下吗?这与未声明不同。除了在奇怪的情况下,也不建议使用它。这是一个错误尽可能(也应该)进行任意嵌套只要使用一个新的变量名。@Noldorin,+1(我写的)。虽然它提供的效果几乎与取消声明一个变量一样,但它会使代码的可维护性成为一场噩梦。取消声明一个变量的愿望几乎总是表明需要将一个方法重构为多个单独的方法当对象可识别时,应使用
块将其包装在
中。