检查数组成员是否存在。

3

大家好,

考虑以下代码片段:

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

Message变量来自服务器,长度不同。我需要解析它,以便如果值不存在,则结果应为"失败"。

有没有简单的方法可以做到这一点?

现在,这个构造会给出编译器错误:"无法将字符串转换为布尔值"。

谢谢。

[编辑]

我想有些人字面上读了这封信。;-) 我需要检查"msg"数组的任意元素是否存在,而不仅仅是msg[2]。 我可能会有这样的东西:

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

在下一个消息处理中。
[/编辑]

x ? y : z 中,表达式 x 必须 求值为 bool 类型,就像在 if (x) { .. } 中一样。这就是编译器错误的含义。 - user166390
2个回答

6
也许你想要的是:
string temp = msgs.Length > 2 ? msgs[2] : "Failed";

编辑:

对于任何元素的检查,同样的方法适用:

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

不是很好。如果我想要检查数组的第n个元素是否存在,这并没有帮助。 - Igor

1
与JavaScript不同,C#不允许您将任意表达式用作布尔值。
您正在尝试编写
msg.Length >= 3 ? msg[2] : "Failed"

另外,与JavaScript(因为它被拿来作比较)不同的是,arr[i],其中i超出了范围,并不仅仅返回undefined :) - user166390
抱歉,我更正了问题。我的意思是:检查数组中第n个元素是否存在。 - Igor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接