Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Phương thức String.CompareOrdinal() trong C#

Phương thức String.CompareOrdinal() trong C# được dùng để so sánh hai đối tượng String chỉ định bằng cách đánh giá giá trị số của các đối tượng Char tương ứng trong mỗi chuỗi. So sánh này dựa trên giá trị Unicode (ordinal) của từng ký tự, không phụ thuộc vào văn hóa (culture).

Cú pháp

public static int CompareOrdinal(string strA, string strB);
  • strA, strB: Hai chuỗi cần so sánh.

Giá trị trả về

Kết quả Ý nghĩa
< 0 strA nhỏ hơn strB (xuất hiện trước theo thứ tự Unicode)
= 0 strA bằng strB
> 0 strA lớn hơn strB (xuất hiện sau theo thứ tự Unicode)

Ví dụ 1: So sánh cơ bản

using System;

public class Demo
{
    public static void Main(string[] args)
    {
        string s1 = "Amy";
        string s2 = "Katie";
        string s3 = s2; // Tham chiếu cùng đối tượng

        Console.WriteLine("Chuỗi 1 = " + s1);
        Console.WriteLine("Chuỗi 2 = " + s2);
        Console.WriteLine("Hai chuỗi bằng nhau? = " + s1.Equals(s2));
        Console.WriteLine("s2 và s3 bằng nhau? = " + s2.Equals(s3));

        Console.WriteLine("CompareOrdinal(s1, s2) = " + string.CompareOrdinal(s1, s2)); // -10
        Console.WriteLine("CompareOrdinal(s2, s3) = " + string.CompareOrdinal(s2, s3)); // 0
    }
}

Kết quả

Chuỗi 1 = Amy
Chuỗi 2 = Katie
Hai chuỗi bằng nhau? = False
s2 và s3 bằng nhau? = True
-10
0

Ví dụ 2: So sánh nhiều cặp chuỗi

using System;

public class Demo
{
    public static void Main(string[] args)
    {
        string s1 = "David";
        string s2 = "David";
        string s3 = s2;
        string s4 = "Tom";
        string s5 = s4;

        Console.WriteLine("Chuỗi 1 = " + s1);
        Console.WriteLine("Chuỗi 2 = " + s2);
        Console.WriteLine("Chuỗi 3 = " + s3);
        Console.WriteLine("Chuỗi 4 = " + s4);
        Console.WriteLine("Chuỗi 5 = " + s5);

        Console.WriteLine("s1 == s2? " + s1.Equals(s2)); // True
        Console.WriteLine("s2 == s3? " + s2.Equals(s3)); // True
        Console.WriteLine("s3 == s4? " + s3.Equals(s4)); // False
        Console.WriteLine("s4 == s5? " + s4.Equals(s5)); // True

        Console.WriteLine("CompareOrdinal(s1, s2) = " + string.CompareOrdinal(s1, s2)); // 0
        Console.WriteLine("CompareOrdinal(s2, s3) = " + string.CompareOrdinal(s2, s3)); // 0
        Console.WriteLine("CompareOrdinal(s3, s4) = " + string.CompareOrdinal(s3, s4)); // -16
        Console.WriteLine("CompareOrdinal(s4, s5) = " + string.CompareOrdinal(s4, s5)); // 0
    }
}

Kết quả

Chuỗi 1 = David
Chuỗi 2 = David
Chuỗi 3 = David
Chuỗi 4 = Tom
Chuỗi 5 = Tom
s1 == s2? True
s2 == s3? True
s3 == s4? False
s4 == s5? True
0
0
-16
0

CompareOrdinal() vs Compare() vs Equals()

Phương thức Đặc điểm Dùng khi nào
CompareOrdinal So sánh theo giá trị Unicode số, không phụ thuộc culture, phân biệt chữ hoa/thường Sắp xếp kỹ thuật, so sánh nhị phân, hiệu suất cao
Compare (với StringComparison) Hỗ trợ so sánh theo culture, có thể bỏ qua chữ hoa/thường Hiển thị cho người dùng, sắp xếp theo ngôn ngữ
Equals Chỉ kiểm tra bằng nhau, trả về bool Kiểm tra equality nhanh

Lưu ý

  • CompareOrdinal nhanh hơn Compare có culture vì không cần tra bảng quy tắc ngôn ngữ.
  • Ký tự chữ hoa (A=65) nhỏ hơn chữ thường (a=97) trong Unicode.
  • Ném ArgumentNullException nếu bất kỳ chuỗi nào là null.