เมธอด String.CompareOrdinal() ใน C# ใช้เปรียบเทียบออบเจ็กต์ String สองตัว โดยประเมินค่าตัวเลข (numeric values) ของออบเจ็กต์ Char ที่สอดคล้องกันในแต่ละสตริง โดยไม่คำนึงถึงวัฒนธรรม (culture-insensitive)
รูปแบบไวยากรณ์ (Syntax)
public static int CompareOrdinal(string str1, string str2);
str1,str2: สตริงที่ต้องการเปรียบเทียบ
ค่าที่คืนกลับ
| ค่าที่คืน | ความหมาย |
|---|---|
| น้อยกว่า 0 | str1 < str2 |
| เท่ากับ 0 | str1 = str2 |
| มากกว่า 0 | str1 > str2 |
ตัวอย่างที่ 1: เปรียบเทียบสตริงต่างกัน
using System;
public class Demo
{
public static void Main(string[] args)
{
string s1 = "Amy";
string s2 = "Katie";
string s3 = s2; // อ้างอิงเดียวกัน
Console.WriteLine("String1 = " + s1);
Console.WriteLine("String2 = " + s2);
Console.WriteLine("Are both strings equal? = " + s1.Equals(s2));
Console.WriteLine("Are s2 and s3 equal? = " + s2.Equals(s3));
Console.WriteLine(string.CompareOrdinal(s1, s2)); // -10 (A < K)
Console.WriteLine(string.CompareOrdinal(s2, s3)); // 0 (เหมือนกัน)
}
}
ผลลัพธ์
String1 = Amy String2 = Katie Are both strings equal? = False Are both strings equal? = True -10 0
ตัวอย่างที่ 2: เปรียบเทียบหลายคู่
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("String1 = " + s1);
Console.WriteLine("String2 = " + s2);
Console.WriteLine("String3 = " + s3);
Console.WriteLine("String4 = " + s4);
Console.WriteLine("String5 = " + s5);
Console.WriteLine("Is s1 and s2 equal? = " + s1.Equals(s2));
Console.WriteLine("Is s2 and s3 equal? = " + s2.Equals(s3));
Console.WriteLine("Is s3 and s4 equal? = " + s3.Equals(s4));
Console.WriteLine("Is s4 and s5 equal? = " + s4.Equals(s5));
Console.WriteLine(string.CompareOrdinal(s1, s2)); // 0
Console.WriteLine(string.CompareOrdinal(s2, s3)); // 0
Console.WriteLine(string.CompareOrdinal(s3, s4)); // -16 (D < T)
Console.WriteLine(string.CompareOrdinal(s4, s5)); // 0
}
}
ผลลัพธ์
String1 = David String2 = David String3 = David String4 = Tom String5 = Tom Is s1 and s2 equal? = True Is s2 and s3 equal? = True Is s3 and s4 equal? = False Is s4 and s5 equal? = True 0 0 -16 0
สรุปและข้อแตกต่างจาก Compare()
CompareOrdinal: เปรียบเทียบด้วยค่า Unicode code point โดยตรง (Culture-insensitive)String.Compare(): เปรียบเทียบตามกฎวัฒนธรรม (Culture-sensitive) เช่น "ß" = "ss" ในภาษาเยอรมัน- ใช้ CompareOrdinal เมื่อต้องการการเปรียบเทียบที่เร็วและ deterministic ไม่ขึ้นกับ locale
- ตัวพิมพ์เล็กมีค่ามากกว่าตัวพิมพ์ใหญ่ (เช่น 'a' (97) > 'Z' (90))