2012-08-14 64 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