是否可以在c#中释放变量?

Ron*_*rby 2 .net c# variables scope declaration

我只是好奇...

是否可以在c#中释放变量?

我的意思是,你可以这样做:

...
string x = "billy bob";

//release variable x somehow

string x = "some other string";

//release variable x somehow

int x = 329;
...
Run Code Online (Sandbox Code Playgroud)

...所以基本上你在同一范围内多次声明变量.

如果在c#中无法做到这一点,可以使用哪种语言?

Gre*_*ech 18

您可以使用范围(松散术语;正式地认为这将是一个声明空间),例如以下是方法体内完全合法的C#:

{
    string x = "billy bob";    
}
{
    string x = "some other string";
}
{
    int x = 329;
}
Run Code Online (Sandbox Code Playgroud)

我不建议编写这样的代码,但它很容易让方法中的变量混淆.最好使用不同的,更具描述性的名称,或将每个块分成自己的方法.

  • 合法,但只是简单的讨厌...*眼睛刺* (2认同)

Jon*_*eet 11

不,这在同一范围内的C#中是不可能的 - 对此我非常感激.这听起来像是可读性灾难的秘诀.正如Greg所示,您可以在方法中引入自己的范围,仅用于此目的.

我不知道哪种语言允许你这样做 - 弱类型语言通常会让你分配任意值当然,但我不知道一种语言,它具有类型信息的显式变量声明,并允许重新声明相同的范围.

您可能想阅读Eric Lippert最新的博客文章,这篇文章都是关于范围的.(如果您还没有阅读过Eric的博客,您可能希望在日历中清除几天并阅读所有后期帖子......或者至少是他加入C#团队以来的那些.准备让您的思绪开始反复.)