Int16 Struct แทนจำนวนเต็ม 16 บิต เครื่องหมาย (signed 16-bit integer) มีช่วงค่าจาก -32,768 ถึง 32,767 ใน C# เป็นอีกชื่อของ short
ฟิลด์ (Fields)
| ลำดับ | ฟิลด์ | คำอธิบาย |
| 1 | MaxValue | ค่าสูงสุดของ Int16 (ค่าคงที่) = 32,767 |
| 2 | MinValue | ค่าต่ำสุดของ Int16 (ค่าคงที่) = -32,768 |
เมธอดหลัก (Key Methods)
| ลำดับ | เมธอด | คำอธิบาย |
| 1 | CompareTo(Int16) | เปรียบเทียบกับ Int16 อื่น คืน -1, 0, 1 |
| 2 | CompareTo(Object) | เปรียบเทียบกับออบเจ็กต์ (ต้องเป็น Int16) |
| 3 | Equals(Int16) | ตรวจสอบความเท่ากับ Int16 อื่น |
| 4 | Equals(Object) | ตรวจสอบความเท่ากับออบเจ็กต์ |
| 5 | GetHashCode() | คืนรหัสแฮชของอินสแตนซ์ |
| 6 | GetTypeCode() | คืน TypeCode ของ Int16 (คือ TypeCode.Int16) |
| 7 | Parse(String) | แปลงสตริงเป็น Int16 |
ตัวอย่าง: 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 for value1 = " + val1.GetHashCode());
Console.WriteLine("HashCode for value2 = " + val2.GetHashCode());
Console.WriteLine("Are they equal? = " + (val1.Equals(val2)));
}
}
ผลลัพธ์
Value1 = 20
Value2 = 25
HashCode for value1 = 20
HashCode for value2 = 25
Are they equal? = False
ตัวอย่าง: Int16.GetHashCode() กับ MaxValue
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 for value1 = " + val1.GetHashCode());
Console.WriteLine("HashCode for value2 = " + val2.GetHashCode());
Console.WriteLine("Are they equal? = " + (val1.Equals(val2)));
}
}
ผลลัพธ์
Value1 = 0
Value2 = 32767
HashCode for value1 = 0
HashCode for value2 = 32767
Are they equal? = False
ตัวอย่าง: 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 for value1 = " + val1.GetHashCode());
Console.WriteLine("HashCode for value2 = " + val2.GetHashCode());
Console.WriteLine("Are they equal? = " + (val1.Equals(val2)));
TypeCode type1 = val1.GetTypeCode();
TypeCode type2 = val2.GetTypeCode();
Console.WriteLine("TypeCode for val1 = " + type1);
Console.WriteLine("TypeCode for val2 = " + type2);
}
}
ผลลัพธ์
Value1 = 0
Value2 = 32767
HashCode for value1 = 0
HashCode for value2 = 32767
Are they equal? = False
TypeCode for val1 = Int16
TypeCode for val2 = Int16
ตัวอย่างเพิ่มเติม: GetTypeCode กับค่าต่างๆ
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 for value1 = " + val1.GetHashCode());
Console.WriteLine("HashCode for value2 = " + val2.GetHashCode());
Console.WriteLine("Are they equal? = " + (val1.Equals(val2)));
TypeCode type1 = val1.GetTypeCode();
TypeCode type2 = val2.GetTypeCode();
Console.WriteLine("TypeCode for val1 = " + type1);
Console.WriteLine("TypeCode for val2 = " + type2);
}
}
ผลลัพธ์
Value1 = 23
Value2 = 0
HashCode for value1 = 23
HashCode for value2 = 0
Are they equal? = False
TypeCode for val1 = Int16
TypeCode for val2 = Int16
ข้อสังเกตสำคัญ
- Int16 (short) เหมาะสำหรับประหยัดหน่วยความจำเมื่อค่าอยู่ในช่วง -32,768 ถึง 32,767
- HashCode ของ Int16 จะเท่ากับค่าตัวเลขนั้นๆ (ไม่มีการแฮชจริง เพราะช่วงค่าเล็ก)
- GetTypeCode() คืนค่า TypeCode.Int16 เสมอ ไม่ขึ้นกับค่าที่เก็บ
- มี
TryParse() สำหรับแปลงสตริงอย่างปลอดภัย
- ใน .NET ใหม่ๆ มีเมธอดเพิ่ม เช่น
Int16.Clamp(), Int16.Sign(), Int16.PopCount()