【发布时间】:2019-07-30 11:28:53
【问题描述】:
所以我们有?? 来解析它的右手值,当左手为空时。
string[] 的等价物是什么。
例如
string value = "One - Two"
string firstValue = value.Split('-')[0] ?? string.Empty;
string secondValue = value.Split('-')[1] ?? string.Empty;
如果我们尝试获取第三个索引或string value = "One",上述示例仍然会崩溃。因为它不是 null 而是抛出了IndexOutOfRangeException。
https://docs.microsoft.com/en-us/dotnet/api/system.indexoutofrangeexception
那么解决上述问题的单线解决方案是什么?我想避免 try-catch 场景,因为这会给出丑陋的代码。
我想从string[] 中获取价值,并将string.Empty 作为备用值,因此我的string 永远不会是null。
【问题讨论】:
-
字符串 secondValue = value.Split('-').Length > 1 ? value.Split('-')[1] ?? string.Empty : string.Empty;
-
string thirdValue = value.Split('-').ElementAtOrDefault(3) ?? ""; -
你可以使用?: operator,但问题是——你真的在这里用一个班轮获得很多吗?最好将拆分结果保存到局部变量中。您可以构建一个扩展方法,如果参数超出范围而不是使用索引器,它将为数组返回
""。
标签: c# arrays string indexoutofrangeexception