Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

โครงสร้าง Int16 Struct ใน C#


Int16 Struct แทนจำนวนเต็ม 16 บิต เครื่องหมาย (signed 16-bit integer) มีช่วงค่าจาก -32,768 ถึง 32,767 ใน C# เป็นอีกชื่อของ short

ฟิลด์ (Fields)

ลำดับฟิลด์คำอธิบาย
1MaxValueค่าสูงสุดของ Int16 (ค่าคงที่) = 32,767
2MinValueค่าต่ำสุดของ Int16 (ค่าคงที่) = -32,768

เมธอดหลัก (Key Methods)

ลำดับเมธอดคำอธิบาย
1CompareTo(Int16)เปรียบเทียบกับ Int16 อื่น คืน -1, 0, 1
2CompareTo(Object)เปรียบเทียบกับออบเจ็กต์ (ต้องเป็น Int16)
3Equals(Int16)ตรวจสอบความเท่ากับ Int16 อื่น
4Equals(Object)ตรวจสอบความเท่ากับออบเจ็กต์
5GetHashCode()คืนรหัสแฮชของอินสแตนซ์
6GetTypeCode()คืน TypeCode ของ Int16 (คือ TypeCode.Int16)
7Parse(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()