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

C#如何判断字符串数组中所有字符串的长度是否相同

检测字符串数组所有元素是否等长的实现方案

现有代码的问题

你当前的实现存在三个核心问题:

  • 比较基准错误:代码中拿每个字符串的Length和数组本身的元素个数words.Length做对比,和「所有字符串元素长度一致」的需求完全不符,正确逻辑应该是拿所有元素和同一个字符串长度基准做对比,而非和数组长度比。
  • 结果判断逻辑错误:循环中每次都会覆盖result的值,最终返回的只是最后一个元素的长度和数组长度的比较结果,前面所有元素的判断结果都会被丢弃,完全没有起到遍历校验的作用。
  • 缺失边界处理:没有考虑空数组、null数组、单元素数组的场景,也没有考虑数组内存在null元素引发空引用异常的可能。

正确实现写法

基础循环写法(无额外依赖,性能最优)

逻辑直接:先处理边界场景,再取第一个元素的长度作为基准,遍历过程中只要发现长度不匹配的元素直接返回false,不需要跑完整个循环,提前终止减少不必要的计算。

public static bool AllStringsSameLength(string[] words)
{
    // null数组、空数组、单元素数组天然满足所有元素等长
    if (words == null || words.Length <= 1)
    {
        return true;
    }
    // 取第一个元素长度作为基准,业务允许null的话可以改成words[0]?.Length
    int targetLength = words[0].Length;
    // 从第二个元素开始遍历校验
    for (int i = 1; i < words.Length; i++)
    {
        // 业务允许null的话判断条件改成 words[i]?.Length != targetLength
        if (words[i].Length != targetLength)
        {
            return false;
        }
    }
    return true;
}

LINQ简洁写法

如果项目允许使用LINQ(需要引入System.Linq命名空间),可以用更简洁的写法实现,逻辑和基础循环版完全一致:

using System.Linq;

public static bool AllStringsSameLength(string[] words)
{
    // 业务允许null的话判断条件改成 s?.Length == words[0]?.Length
    return words == null || words.Length <= 1 || words.All(s => s.Length == words[0].Length);
}

基础循环写法在超长数组场景下性能略优,LINQ写法可读性更高、代码更简洁,可以根据项目实际场景选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:36:20