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

Cấu trúc Int64 (long) trong C#

Cấu trúc Int64 (alias long) trong C# biểu diễn số nguyên có dấu 64-bit. Là kiểu giá trị (value type) bất biến, đại diện cho các số nguyên có dấu trong phạm vi:

-9.223.372.036.854.775.808 đến 9.223.372.036.854.775.807.

Các trường (Fields) quan trọng

Trường Mô tả
MaxValue Giá trị lớn nhất có thể của Int64 (9.223.372.036.854.775.807). Hằng số.
MinValue Giá trị nhỏ nhất có thể của Int64 (-9.223.372.036.854.775.808). Hằng số.

Các phương thức thường dùng

Phương thức Mô tả
CompareTo(Int64) So sánh instance này với Int64 khác, trả về chỉ thị giá trị tương đối.
CompareTo(Object) So sánh instance này với object, trả về chỉ thị giá trị tương đối.
Equals(Int64) Trả về true nếu instance này bằng Int64 chỉ định.
Equals(Object) Trả về true nếu instance này bằng object chỉ định.
GetHashCode() Trả về mã băm cho instance này.
GetTypeCode() Trả về TypeCode cho kiểu giá trị Int64.
Parse(String) Chuyển biểu diễn chuỗi thành Int64.
Parse(String, IFormatProvider) Chuyển chuỗi theo format culture-specific thành Int64.
ToString() Chuyển giá trị số thành chuỗi.
TryParse(String, out Int64) Thử parse, trả về bool thành công (không ném exception).

Ví dụ 1: Int64.CompareTo()

using System;

public class Demo
{
    public static void Main()
    {
        long val1 = 20;
        long val2 = 18;

        Console.WriteLine("Giá trị 1 = " + val1);
        Console.WriteLine("Giá trị 2 = " + val2);
        Console.WriteLine("Kết quả so sánh = " + val1.CompareTo(val2)); // 1 (val1 > val2)
    }
}

Kết quả

Giá trị 1 = 20
Giá trị 2 = 18
Kết quả so sánh = 1

Ví dụ 2: CompareTo với object

using System;

public class Demo
{
    public static void Main()
    {
        long val1 = 20;
        object val2 = (long)20; // Boxed long

        Console.WriteLine("Giá trị 1 = " + val1);
        Console.WriteLine("Giá trị 2 = " + val2);
        Console.WriteLine("Kết quả so sánh = " + val1.CompareTo(val2)); // 0 (bằng nhau)
    }
}

Kết quả

Giá trị 1 = 20
Giá trị 2 = 20
Kết quả so sánh = 0

Ví dụ 3: Int64.Equals()

using System;

public class Demo
{
    public static void Main()
    {
        long val1 = 150;
        long val2 = 240;

        Console.WriteLine("Giá trị 1 = " + val1);
        Console.WriteLine("Giá trị 2 = " + val2);
        Console.WriteLine("Hai giá trị bằng nhau? = " + val1.Equals(val2)); // False
    }
}

Kết quả

Giá trị 1 = 150
Giá trị 2 = 240
Hai giá trị bằng nhau? = False

Ví dụ 4: Equals với giá trị lớn bằng nhau

using System;

public class Demo
{
    public static void Main()
    {
        long val1 = 8768768768;
        long val2 = 8768768768;

        Console.WriteLine("Giá trị 1 = " + val1);
        Console.WriteLine("Giá trị 2 = " + val2);
        Console.WriteLine("Hai giá trị bằng nhau? = " + val1.Equals(val2)); // True
    }
}

Kết quả

Giá trị 1 = 8768768768
Giá trị 2 = 8768768768
Hai giá trị bằng nhau? = True

Int64 vs long

  • long là từ khóa C# (alias), Int64 là tên kiểu .NET (CLR).
  • Hai cái hoàn toàn tương đương, dùng lẫn nhau được.
  • Theo quy ước C#: dùng long cho biến, Int64 khi gọi static member (Int64.MaxValue, Int64.Parse).

Parse và TryParse

string s = "9223372036854775807";
long val = Int64.Parse(s); // Ném exception nếu sai format

// An toàn hơn:
if (Int64.TryParse(s, out long result))
{
    Console.WriteLine("Parse thành công: " + result);
}
else
{
    Console.WriteLine("Chuỗi không hợp lệ");
}