2009-08-04 89 views
2

我只是好奇...是否有可能在c#中釋放一個變量?

是否有可能在c#中釋放一個變量?

我的意思是,你能不能做這樣的事情:

... 
string x = "billy bob"; 

//release variable x somehow 

string x = "some other string"; 

//release variable x somehow 

int x = 329; 
... 

...所以基本上你在同一範圍內的變量多次聲明。

如果在c#中這是不可能的,那麼可以使用哪些語言?

+8

你爲什麼要? – 2009-08-04 22:03:55

+1

是的,我的意思是,除了重用變量令人困惑的事實之外,爲什麼不只是創建一個新變量? – 2009-08-04 22:12:16

回答

16

你可以用範圍來做到這一點(鬆散的術語,我認爲這將是一個聲明空間)。以下是完全的方法體中是合法的C#:

{ 
    string x = "billy bob";  
} 
{ 
    string x = "some other string"; 
} 
{ 
    int x = 329; 
} 

我不會建議這樣寫代碼雖然,這使得它太容易得到的方法混淆變量。最好使用不同的,更具描述性的名稱,或者將每個塊分成自己的方法。

11

不,這是不可能的在同一範圍內的C# - 我非常感謝。這聽起來像是可讀性災難的祕訣。正如Greg所表明的那樣,儘管您可以在方法中引入您自己的範圍。

我不知道哪些語言允許你這樣做 - 弱類型語言通常會讓你指定任意值,但我不知道具有顯式變量聲明的語言的類型信息和也允許在同一範圍內重新宣佈。

您可能想要閱讀Eric Lippert的最新博客帖子,即all about scope。 (如果您還沒有閱讀過Eric的博客,您可能需要在日曆中清除幾天,並閱讀所有後端文章...或者至少自加入C#團隊以來的文章。反覆)

2

您可以重複使用的字符串:。

string x = "billy bob"; 
x = "some other string"; 

你爲什麼要這麼做?

也許你可以這樣做:

object x = "billy bob" 
x = "some other string"; 
x = 329; 

,只要你喜歡。然後投它?

0

您可以重新分配變量,當然:

string s = "billy bob"; 
s = "something else"; 

不能在同一範圍內重新聲明變量:

// This is illegal: 
string s = "billy bob"; 
string s = "foo" 

由於對象是在.NET類型系統的根目錄,你可以這樣做:

object o = "billy bob"; 
o = "foo"; 
o = 5; 
相關問題