Giới thiệu
Int16 Struct đại diện cho số nguyên 16-bit có dấu (signed 16-bit integer) với giá trị từ -32,768 đến 32,767. Trong C#, short là alias của Int16.
Các trường (Fields) của Int16
| STT | Trường & Mô tả |
| 1 |
MaxValue − Giá trị lớn nhất của Int16: 32,767 (0x7FFF). Trường hằng (const). |
| 2 |
MinValue − Giá trị nhỏ nhất của Int16: -32,768 (0x8000). Trường hằng (const). |
Các phương thức chính
| STT | Phương thức & Mô tả |
| 1 | CompareTo(Int16) − So sánh với Int16 khác. |
| 2 | CompareTo(Object) − So sánh với object. |
| 3 | Equals(Int16) − Kiểm tra bằng giá trị Int16. |
| 4 | Equals(Object) − Kiểm tra bằng object. |
| 5 | GetHashCode() − Trả về hash code (thường là giá trị int của short). |
| 6 | GetTypeCode() − Trả về TypeCode.Int16 (giá trị 7). |
| 7 | Parse(String) − Chuyển chuỗi thành Int16. |
| 8 | TryParse(String, out Int16) − Thử parse an toàn, khuyên dùng. |
| 9 | ToString() − Chuyển thành chuỗi, hỗ trợ format. |
Ví dụ: Int16.GetHashCode()
using System;
public class Demo {
public static void Main() {
short val1 = 20;
short val2 = 25;
Console.WriteLine("Value1 = " + val1);
Console.WriteLine("Value2 = " + val2);
Console.WriteLine("HashCode cho value1 = " + val1.GetHashCode());
Console.WriteLine("HashCode cho value2 = " + val2.GetHashCode());
Console.WriteLine("Chúng có bằng nhau? = " + (val1.Equals(val2)));
}
}
Đầu ra
Value1 = 20
Value2 = 25
HashCode cho value1 = 1310740
HashCode cho value2 = 1638425
Chúng có bằng nhau? = False
Ví dụ: Int16.GetHashCode() với MaxValue
using System;
public class Demo {
public static void Main() {
short val1 = 0;
short val2 = Int16.MaxValue; // 32767
Console.WriteLine("Value1 = " + val1);
Console.WriteLine("Value2 = " + val2);
Console.WriteLine("HashCode cho value1 = " + val1.GetHashCode());
Console.WriteLine("HashCode cho value2 = " + val2.GetHashCode());
Console.WriteLine("Chúng có bằng nhau? = " + (val1.Equals(val2)));
}
}
Đầu ra
Value1 = 0
Value2 = 32767
HashCode cho value1 = 0
HashCode cho value2 = 2147450879
Chúng có bằng nhau? = False
Ví dụ: Int16.GetTypeCode()
using System;
public class Demo {
public static void Main() {
short val1 = 0;
short val2 = Int16.MaxValue;
Console.WriteLine("Value1 = " + val1);
Console.WriteLine("Value2 = " + val2);
Console.WriteLine("HashCode cho value1 = " + val1.GetHashCode());
Console.WriteLine("HashCode cho value2 = " + val2.GetHashCode());
Console.WriteLine("Chúng có bằng nhau? = " + (val1.Equals(val2)));
TypeCode type1 = val1.GetTypeCode();
TypeCode type2 = val2.GetTypeCode();
Console.WriteLine("TypeCode cho val1 = " + type1);
Console.WriteLine("TypeCode cho val2 = " + type2);
}
}
Đầu ra
Value1 = 0
Value2 = 32767
HashCode cho value1 = 0
HashCode cho value2 = 2147450879
Chúng có bằng nhau? = False
TypeCode cho val1 = Int16
TypeCode cho val2 = Int16
Ví dụ GetTypeCode() khác
using System;
public class Demo {
public static void Main() {
short val1 = 23;
short val2 = 0;
Console.WriteLine("Value1 = " + val1);
Console.WriteLine("Value2 = " + val2);
Console.WriteLine("HashCode cho value1 = " + val1.GetHashCode());
Console.WriteLine("HashCode cho value2 = " + val2.GetHashCode());
Console.WriteLine("Chúng có bằng nhau? = " + (val1.Equals(val2)));
TypeCode type1 = val1.GetTypeCode();
TypeCode type2 = val2.GetTypeCode();
Console.WriteLine("TypeCode cho val1 = " + type1);
Console.WriteLine("TypeCode cho val2 = " + type2);
}
}
Đầu ra
Value1 = 23
Value2 = 0
HashCode cho value1 = 1507351
HashCode cho value2 = 0
Chúng có bằng nhau? = False
TypeCode cho val1 = Int16
TypeCode cho val2 = Int16
Lưu ý quan trọng
Int16 là value type (struct), lưu trên stack.
- Dùng
TryParse thay Parse để tránh exception.
- Overflow: phép tính vượt quá phạm vi [-32768, 32767] sẽ bị truncate (mặc định) hoặc ném exception (trong
checked context).
- Hash code của short không đơn giản là giá trị int (khác với sbyte), do thuật toán băm nội bộ.