2012-08-14 107 views
3

所有,檢查如果陣列成員存在

考慮下面的代碼段:

string message = "abc;def;ghi"; 
string[] msgs = message.Split(';'); 
string temp = msg[2] ? msg[2] : "Failed"; 

消息變量來自該服務器的並且具有不同的長度。我需要解析它,這樣,如果值不存在,結果應該是「失敗」。

有沒有簡單的方法來做到這一點?

眼下這個結構給comppiler錯誤:「不能把字符串轉換爲bool」。

謝謝。

[編輯]

我猜有些人閱讀的信這封信。 ;-) 我需要檢查是否存在「msg」中陣列的任意元件,而不僅僅是MSG [2]。 我能有這樣的:在未來的消息處理

string message = "abc;def"; 
str[] msg = message.Split(';'); 
string temp = msg[3] ? msg[3] : "Failed"; 

[/編輯]

+0

在'X? Y:z'表達'x' *必須*計算爲'bool'型,正如它在'如果(x)的{..}'。這就是編譯器錯誤所說的。 – 2012-08-14 19:18:05

回答

6

也許你想:

string temp = msgs.Length > 2 ? msgs[2] : "Failed"; 

編輯:

對於檢查的任何元素,同樣的事情的作品:

int index = 42; 
string temp = msgs.Length > index ? msgs[index] : "Failed"; 
+0

不是真的。如果我想檢查數組的第n個元素是否存在,它將無濟於事。 – Igor 2012-08-14 19:56:35

+0

@Igor相同的技術 - 我編輯顯現。 – 2012-08-14 19:59:38

1

不像Javascript,C#不允許你o使用任意表達式作爲布爾值。

你試圖寫

msg.Length >= 3 ? msg[2] : "Failed" 
+0

另外,與JavaScript不同(因爲它被提出用於比較),'arr [i]',其中'i'超出範圍,不會簡單地導致'undefined' :) – 2012-08-14 19:20:46

+0

對不起,我糾正了這個問題。我想問的是:檢查數組中第n個元素的存在。 – Igor 2012-08-14 19:58:04