2011-12-04 24 views
0

的我有一段代碼,在XML迭代屬性:使用未賦值的變量(字符串)

string groupName; 
do 
{ 
    switch (/* ... */) 
    { 
     case "NAME": 
      groupName = thisNavigator.Value; 
      break; 
     case "HINT": 
      // use groupName 

可是這樣一來,我得到使用未賦值的變量的錯誤。如果我爲groupName指定了某些內容,那麼我無法更改它,因爲這是C#中字符串的工作原理。任何解決方法?

回答

7

你是正確的,在.NET是不可改變的,但你的假設,即一個字符串變量不能改變是錯誤的。

這是啥罰款:

string groupName = null; 
groupName = "aName"; 
groupName = "a different Name"; 

你的代碼,如果你做以下不會有一個錯誤:

string groupName = string.Empty; // or null, if empty is meaningful 
do 
{ 
    switch (/* ... */) 
    { 
     case "NAME": 
      groupName = thisNavigator.Value; 
      break; 
     case "HINT": 
      // use groupName 
1
string groupName = string.Empty; 

只是分配一個空字符串,你應該okej 。

1

編譯器不知道switch語句的上下文(例如,不能保證交換機總是匹配一個case)。

因此,即使在切換後,groupName仍有可能保持未分配狀態。

您可以在switch語句中實例化groupNameString.Empty或使用default:

1

集組名在每個情況和使用默認鍵在switch語句或指定組名前開關爲null

2

switchdefault是否爲groupName賦值?如果沒有,那麼這將導致錯誤。

switch 
{ 
    case "NAME": 
    groupName = thisNavigator.Value; 
    break; 
    //... 
    default: 
    groupName = "something"; 
    break; 
}