2011-05-05 105 views
6

我有一個小問題,我需要檢查一個var是否在c#中定義。我不想檢查它是否爲空,因爲那時我想做這個,它必須存在。c#可以檢查一個var是否被定義?

例如我需要知道它的變種string foo被定義爲有像點兒:

isDefined("foo") :: bool 
+0

也許你可以描述你真正的問題?爲什麼你想檢查一個局部變量的存在? IMO沒有任何意義。 – CodesInChaos 2011-05-05 09:56:53

+0

你的意思是什麼可能在語言中沒有必要聲明像JavaScript這樣的每個變量? – 2011-05-05 10:10:21

回答

7

正如你所知道的變量是string,您可以使用String.IsNullOrEmpty(foo)。這會返回一個bool

如果你不知道該變量是什麼類型的,你可以使用:if (foo != null)

1

你不能在運行時的名字訪問局部變量。要在運行時按名稱訪問成員,您可以使用反射和dynamic

4

你能在你打算如何使用這個解釋一下?基於這個問題以及之前的一個問題,它看起來像來自PHP背景。在C#中,沒有未定義變量的概念。在代碼中的任何一點,給定的變量都被聲明或不被聲明,你可以通過查看代碼來確定它是否被聲明。如果沒有聲明,編譯器就不會讓你使用變量(它不存在)。變量可能會被聲明,但未被初始化;然而,編譯器不會讓你讀取變量的值,除非確定該變量有一個值。例如:

int foo; // Declared, but uninitialized 
if (bar == 42) 
    foo = 3; // Initialize foo 
// At this point, foo may or may not be initialized. 
// Since we cannot be sure that it is initialized, 
// the next line will not compile. 
x = foo; 

如果你想跟蹤的變量是否已被賦值(你不能使用null表示沒有價值已分配),你需要跟蹤的這與單獨的bool變量開始爲false,並且在您分配給其他變量時設置爲true

相關問題