我只是好奇...
是否可以在 C# 中释放变量?
我的意思是,你能做这样的事情:
...
string x = "billy bob";
//release variable x somehow
string x = "some other string";
//release variable x somehow
int x = 329;
...
...所以基本上你在同一范围内多次声明变量。
如果这在 c# 中是不可能的,那么在哪些语言中是可能的?
我只是好奇...
是否可以在 C# 中释放变量?
我的意思是,你能做这样的事情:
...
string x = "billy bob";
//release variable x somehow
string x = "some other string";
//release variable x somehow
int x = 329;
...
...所以基本上你在同一范围内多次声明变量。
如果这在 c# 中是不可能的,那么在哪些语言中是可能的?
您可以使用范围(松散的术语;正式地我相信这将是一个声明空间)来做到这一点,例如,以下是方法主体中完全合法的 C#:
{
string x = "billy bob";
}
{
string x = "some other string";
}
{
int x = 329;
}
不过,我不建议编写这样的代码,因为它很容易在方法中混淆变量。最好使用不同的、更具描述性的名称,或者将每个块分成自己的方法。
不,这在同一范围内的 C# 中是不可能的——对此我非常感激。这听起来像是可读性灾难的秘诀。正如 Greg 所展示的,您可以在一个方法中引入自己的作用域,仅用于此目的。
我不知道哪些语言允许你这样做——当然,弱类型语言通常会让你分配任意值,但我不知道有一种语言有明确的变量声明和类型信息,并且还允许在范围相同。
您可能想阅读 Eric Lippert 的最新博客文章,该文章都是关于范围的。(如果您还没有阅读 Eric 的博客,您可能想在日历中腾出几天时间并阅读所有回帖……或者至少是自从他加入 C# 团队以来的那些。准备好让您大吃一惊反复。)
你可以重用一个字符串:
string x = "billy bob";
x = "some other string";
你为什么想做这个?
也许你可以这样做:
object x = "billy bob"
x = "some other string";
x = 329;
然后随心所欲地投?
当然,您可以重新分配变量:
string s = "billy bob";
s = "something else";
您不能在同一范围内重新声明变量:
// This is illegal:
string s = "billy bob";
string s = "foo"
由于 Object 是 .NET 中类型系统的根,因此您可以执行以下操作:
object o = "billy bob";
o = "foo";
o = 5;