2017-01-23 91 views
1

強制性我是C#的新手,正在爲一個大型項目工作並遇到困難,Google似乎無法幫助我解決問題。不能隱式地將字符串[]轉換爲字符串的情況下

我知道案件需要保持不變,我正在使用一個變量來聲明一個案例,但似乎找不到糾正問題的正確方法。

我正在使用代碼來確定是否向市場發送訂單消息。

的定義的變量

private string[] m_oKeys = new string[1]; 

與你所定義的數組包含一個字符串的問題

 public void m_ts_OrderAdded(object sender, OrderAddedEventArgs e) 
    { 
     string key = e.Order.SiteOrderKey; 
     switch (key) 
     { 
      case m_oKeys[1]: 
       m_oObject = new e.Order(); 
       m_oKeys = new e.Order.SiteOrderKey(); 
       m_InFlight = new (false); 
       break; 
      case m_oKeys[]: 
       m_oObject[] = e.Order; 
       m_oKeys(1) = e.Order.SiteOrderKey; 
       m_InFlight(1) = false; 
       break; 
      default: 
       break; 
       //handle order not found... 
     } 
    } 
+6

什麼是'case m_oKeys []'打算匹配給定沒有指定索引...? –

+7

那麼,正如你已經指出的那樣,case語句中使用的文字必須是常量。因此,您允許使用的唯一語法是常量字面值,例如'case「key1」:'。你不能在這裏使用一個變量。相反,將開關語句寫成一系列「if」語句。此外,這應該是什麼匹配? 'case m_oKeys []:'< - no index –

回答

1

開關。

private string[] m_oKeys = new string[1]; 

所以你只能引用第一個元素m_oKeys[0]。正如其他人所說,您必須使用case標籤的常量。也許if-else會爲你更好地工作。

public void m_ts_OrderAdded(object sender, OrderAddedEventArgs e) 
    { 
     string key = e.Order.SiteOrderKey; 
     if (key == m_oKeys[0]) 
     { 
      // Do something 
     } 
     else 
     { 
      // Do something else 
     } 
    } 
+0

謝謝,我想我可能試圖用開關邏輯過分複雜。使用if和else if語句是一個更好的主意。謝謝! –