如何:在C#中取消设置变量?

时间:2008-10-13 11:33:55

标签: c#

这真的很有趣,但我没有找到自己的答案。我怎样才能取消变量?例如。 php有unset($ var)函数。

10 个答案:

答案 0 :(得分:26)

你做不到。没有“取消”变量的概念。您可以将其设置为不同的值 - 0,null,任何适当的值。实例/静态变量甚至没有关于变量是否设置/未设置的概念,并且局部变量仅具有“明确分配”或“未明确分配”。

你想要实现的是什么?

答案 1 :(得分:25)

实际上并没有相当于“未设置”。

我所知道的最接近的匹配是使用default关键字。

例如:

MyType myvar = default(MyType);
string a = default(string);

变量仍将“设置”,但它将具有默认值。

答案 2 :(得分:9)

通常将它设置为null是否有作业(对于像int这样的类型的变量,你必须使它成为可以为null的版本的int?)。

如果你只想在一个更大的函数中短时间使用该变量,你可以将它作为范围,如下所示:

{
    int i = 2;
}

变量只会持续到结束括号。

如果这些不能涵盖您的情况,那么您可以详细说明您需要在何处执行此操作。

答案 3 :(得分:5)

也许你想要释放变量引用的对象

MyVar = null;

答案 4 :(得分:3)

值类型变量不需要取消设置。它们是永久分配的。

对于引用类型变量,您只需将它们设置为 null ,垃圾收集器将销毁关联的对象(并释放内存)。但请注意,变量本身将在整个范围内继续存在(代码块,方法,对象生命......)

如果你想使用它来释放内存,那么只需将所有不需要的对象设置为null并等待垃圾收集器完成它的工作。

编辑:正如评论中所述,我无意中说垃圾收集器不会立即启动收集。当框架试图分配内存并且找不到足够的空闲时,通常会发生这种情况。可以“手动”启动垃圾收集,但这是不可取的,可能会恶化程序的行为。对于大多数用途,GC的默认行为应该足够了。

答案 5 :(得分:2)

要取消设置环境变量,请使用相同的Environment.SetEnvironmentVariable方法,但将null或string.Empty作为值http://msdn.microsoft.com/en-us/library/96xafkes(v=vs.110).aspx

传递
  

“如果value为空且变量命名的环境变量存在,则删除环境变量。”

答案 6 :(得分:1)

对于一个对象,您可以将其设置为null,字符串最好设置为String.Empty,或者您可以将变量声明为可为空,例如:

int? i = null;

答案 7 :(得分:1)

您可以为该变量定义范围。当范围退出时,将不再定义变量:

System.Console.WriteLine("let's give this a try: ");
{
    int j = 0;
    System.Console.WriteLine(j);
}
//Won't compile with the following line.
//System.Console.WriteLine(j);

答案 8 :(得分:-1)

我亲自去了

变量=没有

似乎可以释放资源,特别是在使用手机时!

答案 9 :(得分:-1)

我认为你需要让它null,并且这样做:

int? Foo = 5;
Foo = null;