Latest web development tutorials
×

C# หลักสูตร

C# หลักสูตร C# แนะนำโดยย่อ C# สิ่งแวดล้อม C# โครงสร้างหลักสูตร C# ไวยากรณ์พื้นฐาน C# ชนิดข้อมูล C# ประเภทการแปลง C# ตัวแปร C# คงที่ C# ผู้ประกอบการ C# ผู้พิพากษา C# การไหลเวียน C# บรรจุภัณฑ์ C# ทาง C# ประเภท nullable C# แถว(Array) C# เชือก(String) C# โครงสร้าง(Struct) C# แจกแจง(Enum) C# หมวดหมู่(Class) C# สืบทอด C# polymorphism C# ดำเนินงานมาก C# อินเตอร์เฟซ(Interface) C# namespaces(Namespace) C# สั่ง preprocessor C# นิพจน์ปกติ C# การจัดการข้อยกเว้น C# input และ output ไฟล์

C# การสอนที่ทันสมัย

C# คุณสมบัติ(Attribute) C# การสะท้อนกลับ(Reflection) C# คุณสมบัติ(Property) C# ทำดัชนี(Indexer) C# มอบความไว้วางใจ(Delegate) C# เหตุการณ์(Event) C# ตั้งค่า(Collection) C# ยาชื่อสามัญ(Generic) C# วิธีการที่ไม่ระบุชื่อ C# รหัสที่ไม่ปลอดภัย C# multithreading

รหัส C # ไม่ปลอดภัย

เมื่อบล็อกของรหัสโดยใช้แท็กปรับปรุงไม่ปลอดภัย, C # ช่วยให้การใช้ตัวแปรชี้ในฟังก์ชั่นรหัสที่ไม่ปลอดภัยหรือรหัสที่ไม่มีการจัดการคือการใช้ตัวแปรชี้รหัสบล็อก

ตัวแปรชี้

ตัวชี้เป็นค่าตัวแปรที่อยู่ของตัวแปรอื่นคือที่อยู่ตรงกับที่ตั้งหน่วยความจำเช่นเดียวกับตัวแปรอื่น ๆ หรือค่าคงที่คุณต้องใช้ตัวชี้ก่อนอื่นจัดเก็บตัวแปรประกาศตัวชี้อยู่

รูปแบบทั่วไปของการประกาศตัวแปรชี้คือ

ประเภท var ชื่อ;

ต่อไปนี้เป็นคำประกาศชี้ที่ถูกต้อง:

int * IP; / * จุดจำนวนเต็ม * /
คู่ * DP; / * ตัวชี้ไปยังหมายเลขแม่นยำสอง * /
ลอย * FP; / * ชี้ไปลอย * /
char * CH / * ชี้ไปยังถ่าน * /

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการใช้งานของ C #ใช้ปรับปรุงไม่ปลอดภัยเมื่อตัวชี้:

การใช้ระบบ
namespace UnsafeCodeApplication
{
    Program รุ่น
    {
        คงไม่ปลอดภัยเป็นโมฆะ main (String args [])
        {
            int var = 20;
            int * p = & var;
            Console.WriteLine ( "ข้อมูลเป็น: {0}" var);
            Console.WriteLine ( "ที่อยู่คือ: {0}" (int) P);
            Console.ReadKey ();
        }
    }
}

เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:

ข้อมูลเป็น: 20
ที่อยู่: 99215364

คุณไม่สามารถประกาศวิธีการทั้งหมดเป็นรหัสที่ไม่ปลอดภัยเพียงส่วนหนึ่งของความต้องการที่จะประกาศวิธีการที่เป็นรหัสที่ไม่ปลอดภัย ตัวอย่างต่อไปนี้แสดงให้เห็นถึงจุดนี้

การดึงข้อมูลโดยใช้ค่าตัวชี้

คุณสามารถใช้ToString () วิธีการของข้อมูลอ้างอิงตำแหน่งที่เก็บไว้ในตัวแปรชี้การดึงตัวอย่างต่อไปนี้แสดงให้เห็นถึงจุดนี้:

การใช้ระบบ
namespace UnsafeCodeApplication
{
   Program รุ่น
   {
      ประชาชนเป็นโมฆะคง Main ()
      {
         ไม่ปลอดภัย
         {
            int var = 20;
            int * p = & var;
            Console.WriteLine ( "ข้อมูลเป็น: {0}" var);
            Console.WriteLine ( "ข้อมูลเป็น: {0}" p-> ToString ());
            Console.WriteLine ( "ที่อยู่คือ: {0}" (int) P);
         }
         Console.ReadKey ();
      }
   }
}

เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:

ข้อมูลเป็น: 20
ข้อมูลเป็น: 20
ที่อยู่: 77128984

ผ่านตัวชี้เป็นวิธีการพารามิเตอร์

คุณสามารถส่งผ่านตัวแปรชี้เป็นพารามิเตอร์กับวิธีการของวิธีการที่ ตัวอย่างต่อไปนี้แสดงให้เห็นถึงจุดนี้:

การใช้ระบบ
namespace UnsafeCodeApplication
{
   ระดับ TestPointer
   {
      ประชาชนที่ไม่ปลอดภัยเป็นโมฆะแลกเปลี่ยน (int * p, q int *)
      {
         int อุณหภูมิ = * p;
         * * * * * * * * p = Q;
         * q = อุณหภูมิ;
      }

      ประชาชนไม่ปลอดภัย static void Main ()
      {
         TestPointer p = TestPointer ใหม่ ();
         int var1 = 10;
         int var2 = 20;
         * int x = & var1;
         int * Y = & var2;
         
         Console.WriteLine ( "ก่อน Swap: var1: {0} var2: {1}" var1, var2);
         p.swap (x, y);

         Console.WriteLine ( "หลังจาก Swap: var1: {0} var2: {1}" var1, var2);
         Console.ReadKey ();
      }
   }
}

เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:

ก่อนที่จะ Swap: var1: 10 var2: 20
หลังจาก Swap: var1: 20, var2: 10

ใช้ตัวชี้การเข้าถึงองค์ประกอบมากมาย

ใน C # ชื่ออาร์เรย์และชี้ไปยังข้อมูลอาร์เรย์ที่มีประเภทข้อมูลเดียวกันเป็นตัวชี้ไปยังตัวแปรชนิดที่แตกต่างกัน ยกตัวอย่างเช่น int * P และ int [] P เป็นชนิดที่แตกต่างกัน คุณสามารถเพิ่ม P ตัวแปรชี้เพราะมันจะไม่คงที่ในหน่วยความจำ แต่ที่อยู่ของอาร์เรย์ได้รับการแก้ไขในหน่วยความจำเพื่อให้คุณไม่สามารถเพิ่ม P อาร์เรย์

ดังนั้นถ้าคุณจำเป็นต้องใช้ตัวแปรตัวชี้ในการเข้าถึงข้อมูลอาร์เรย์ที่เรามักจะทำใน C หรือ C ++เป็นคำหลักที่จะใช้ตัวชี้คงที่คงที่

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงจุดนี้:

การใช้ระบบ
namespace UnsafeCodeApplication
{
   ระดับ TestPointer
   {
      ประชาชนไม่ปลอดภัย static void Main ()
      {
         int [] รายการ = {10, 100, 200};
         คงที่ (int * PTR = รายการ)

         / * จอแสดงผลตัวชี้อยู่อาร์เรย์ * /
         for (int i = 0; i <3; i ++)
         {
            Console.WriteLine ( "ที่อยู่ของรายการ [{0}] = {1}" ผม (int) (PTR + i));
            Console.WriteLine ( "ค่าของรายการ [{0}] = {1}" ผม * (PTR + i));
         }
         Console.ReadKey ();
      }
   }
}

เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:

ที่อยู่ของรายการ [0] = 31627168
มูลค่าของรายการ [0] = 10
ที่อยู่ของรายการ [1] = 31627172
มูลค่าของรายการ [1] = 100
ที่อยู่ของรายการ [2] = 31627176
มูลค่าของรายการ [2] = 200

รวบรวมรหัสที่ไม่ปลอดภัย

เพื่อที่จะรวบรวมรหัสที่ไม่ปลอดภัยคุณต้องสลับไปเรียบเรียงบรรทัดคำสั่งระบุ/ บรรทัดคำสั่งที่ไม่ปลอดภัย

ยกตัวอย่างเช่นการรวบรวมโปรแกรมที่เรียกว่า prog1.cs มีรหัสที่ไม่ปลอดภัยป้อนคำสั่งที่บรรทัดคำสั่ง:

CSC / prog1.cs ที่ไม่ปลอดภัย

หากคุณกำลังใช้ Visual Studio IDE, คุณต้องเปิดใช้รหัสที่ไม่ปลอดภัยในคุณสมบัติของโครงการ

ดำเนินการดังนี้

  • โดย Explorer (Explorer โซลูชัน) แอตทริบิวต์ (คุณสมบัติ)โหนดับเบิลคลิกเปิดคุณสมบัติโครงการ (คุณสมบัติของโครงการ)
  • คลิกที่แท็บสร้าง
  • เลือกตัวเลือก"ให้รหัสที่ไม่ปลอดภัย"