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