繁体   English   中英

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

[英]Is it possible to release a variable in 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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM