首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 比較兩個字串陣列內容是否完全相同

     編輯:程式設計綜合問答

需求描述

給定兩個字串陣列 string[] str1 和 string[] str2,需判斷其長度、順序及每個元素值是否完全相等。例如 {"1","2","3"} 與 {"1","2","3"} 視為相等。

解決方案

方法一:手動迴圈比較(適合教學或特殊邏輯)

public bool ArraysEqual(string[] str1, string[] str2) {
    if (str1 == null || str2 == null) return str1 == str2;
    if (str1.Length != str2.Length) return false;

    for (int i = 0; i < str1.Length; i++) {
        if (str1[i] != str2[i]) return false;
    }
    return true;
}

方法二:使用 LINQ SequenceEqual(推薦,簡潔高效)

using System.Linq;

bool areEqual = str1.SequenceEqual(str2);

方法三:使用 StructuralComparisons(適用於多維陣列或自訂比較)

using System.Collections;
using System.Collections.Generic;

bool areEqual = StructuralComparisons.StructuralEqualityComparer.Equals(str1, str2);

效能與適用場景

  • SequenceEqual:.NET Core / .NET 5+ 高度優化,適用於大多數場景,程式碼最簡潔。
  • 手動迴圈:無額外相依性,適合需自訂比較邏輯(如忽略大小寫)時擴充。
  • StructuralEqualityComparer:支援巢狀集合比較,但效能稍遜於 SequenceEqual。

完整範例程式

string[] arr1 = { "1", "2", "3" };
string[] arr2 = { "1", "2", "3" };
string[] arr3 = { "1", "3", "2" };

Console.WriteLine(arr1.SequenceEqual(arr2)); // True
Console.WriteLine(arr1.SequenceEqual(arr3)); // False

建議優先使用 SequenceEqual,程式碼可讀性高且效能優異。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved