You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单行代码从string[]取值并设置默认值避免索引越界?

解决C#中数组索引越界时返回默认值的单行方案

这个问题确实挺常见的——??运算符只针对左值为null的场景生效,但像Split返回的数组本身非null,只是索引超出范围时,它就帮不上忙了。给你几个简洁的单行解决方案,完全避开try-catch,还能保证结果永远不为null:

方法一:用LINQ的ElementAtOrDefault(最直接的单行写法)

ElementAtOrDefault方法会在索引超出数组范围时返回对应类型的默认值(对于string来说就是null),之后再配合??运算符把null替换成string.Empty,完美解决问题:

string value = "One - Two";
string firstValue = value.Split('-').ElementAtOrDefault(0) ?? string.Empty;
string secondValue = value.Split('-').ElementAtOrDefault(1) ?? string.Empty;
string thirdValue = value.Split('-').ElementAtOrDefault(2) ?? string.Empty; // 索引越界,返回string.Empty

额外提示:如果你的原始value可能为null,可以再加一层空值处理,避免调用Split时抛出异常:

string safeThirdValue = (value ?? string.Empty).Split('-').ElementAtOrDefault(2) ?? string.Empty;

方法二:自定义扩展方法(适合多次复用场景)

如果你的代码里经常需要这种“数组取值失败返回默认值”的操作,写个扩展方法能让代码更简洁易读:

public static class ArrayExtensions
{
    public static string GetElementOrDefault(this string[] array, int index, string defaultValue = "")
    {
        return index >= 0 && index < array.Length ? array[index] : defaultValue;
    }
}

使用起来就像这样:

string thirdValue = value.Split('-').GetElementOrDefault(2);

两种方法都能满足你的需求,第一种更适合单次使用的单行场景,第二种则适合需要重复调用的场景。

内容的提问来源于stack exchange,提问作者Roy Berris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:28:02