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 # เงินต้น (ผู้แทน) คล้ายกับ C หรือ C ++ ชี้ฟังก์ชันหลัก (ผู้แทน) มีวิธีสำหรับชนิดอ้างอิงอ้างอิงตัวแปรอ้างอิงสามารถเปลี่ยนแปลงที่รันไทม์

หลัก (ผู้แทน) ตั้งใจเฉพาะสำหรับเหตุการณ์ที่เกิดขึ้นและวิธีการติดต่อกลับ ทั้งหมดของผู้ร่วมประชุม (Delegate)จะได้มาจากการ System.Delegate คลาส

คณะกรรมาธิการงบ (ผู้แทน)

ใบมอบฉันทะกำหนดวิธีการที่อาจจะถูกอ้างอิงโดยผู้ร่วมประชุม ผู้แทนสามารถชี้ไปที่วิธีการที่มีป้ายกำกับเดียวกัน

ตัวอย่างเช่นสมมติว่าคุณมีตัวแทน:

ผู้ร่วมประชุม int สาธารณะ MyDelegate (String s)

คณะกรรมการดังกล่าวข้างต้นอาจจะถูกใช้ในการอ้างถึงวิธีการใด ๆที่ใช้พารามิเตอร์สายเดียวและส่งกลับตัวแปรชนิดint

ไวยากรณ์สำหรับการประกาศรับหน้าที่ดังต่อไปนี้:

ผู้รับมอบสิทธิ์ <กลับประเภท> <ผู้รับมอบสิทธิ์ชื่อ> <รายการพารามิเตอร์>

ตัวอย่างของคณะกรรมการ (ผู้แทน)

เมื่อประกาศประเภทตัวแทนวัตถุผู้รับมอบต้องใช้คำหลักใหม่ในการสร้างและมีวิธีการโดยเฉพาะอย่างยิ่งเมื่อคุณสร้างพารามิเตอร์ตัวแทนส่งผ่านไปยังคำสั่งใหม่เป็นสายวิธีเช่นการเขียน แต่ไม่มีข้อโต้แย้ง ตัวอย่างเช่น:

ผู้ร่วมประชุมโมฆะสาธารณะ printString (String s)
...
printString PS1 = printString ใหม่ (WriteToScreen);
printString PS2 = printString ใหม่ (WriteToFile);

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

การใช้ระบบ

มอบหมาย int NumberChanger (int n);
DelegateAppl namespace
{
   ระดับ TestDelegate
   {
      int NUM คงที่ = 10;
      สาธารณะคง int AddNum (int P)
      {
         NUM + = p;
         กลับ NUM;
      }

      สาธารณะคง int MultNum (int Q)
      {
         NUM * = Q;
         กลับ NUM;
      }
      int สาธารณะคง getNum ()
      {
         กลับ NUM;
      }

      เป็นโมฆะคง main (String args [])
      {
         // สร้างตัวอย่างผู้รับมอบสิทธิ์ NumberChanger NC1 = ใหม่ NumberChanger (AddNum);
         NumberChanger NC2 = ใหม่ NumberChanger (MultNum);
         // วิธีการเรียกใช้ NC1 ผู้รับมอบวัตถุ (25);
         Console.WriteLine ( "ค่าของ Num: {0}" getNum ());
         NC2 (5)
         Console.WriteLine ( "ค่าของ Num: {0}" getNum ());
         Console.ReadKey ();
      }
   }
}

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

ค่าของ Num: 35
ค่าของ Num: 175

นาย multicast (Multicasting ของผู้แทน)

วัตถุผู้แทนสามารถใช้ประกอบการ "+" ที่จะผสาน ผู้รับมอบสิทธิ์ที่จะเรียกมันผสานผสานสองได้รับมอบหมาย เพียงชนิดเดียวกันของความไว้วางใจสามารถนำมารวมกัน "-" ผู้ประกอบการสามารถนำมาใช้ในการลบองค์ประกอบจากตัวแทนผู้รับมอบสิทธิ์รวม

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

การใช้ระบบ

มอบหมาย int NumberChanger (int n);
DelegateAppl namespace
{
   ระดับ TestDelegate
   {
      int NUM คงที่ = 10;
      สาธารณะคง int AddNum (int P)
      {
         NUM + = p;
         กลับ NUM;
      }

      สาธารณะคง int MultNum (int Q)
      {
         NUM * = Q;
         กลับ NUM;
      }
      int สาธารณะคง getNum ()
      {
         กลับ NUM;
      }

      เป็นโมฆะคง main (String args [])
      {
         // สร้างตัวอย่างผู้รับมอบสิทธิ์ NumberChanger NC;
         NumberChanger NC1 = ใหม่ NumberChanger (AddNum);
         NumberChanger NC2 = ใหม่ NumberChanger (MultNum);
         NC = NC1;
         NC + = NC2;
         // โทร NC multicast (5)
         Console.WriteLine ( "ค่าของ Num: {0}" getNum ());
         Console.ReadKey ();
      }
   }
}

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

ค่าของ Num: 75

หลัก (ผู้แทน) ใช้

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการใช้งานของคณะผู้แทนprintStringหลักจะใช้ในการอ้างอิงวิธีการกับสตริงเป็น input และไม่กลับอะไร

เราใช้ผู้รับมอบสิทธิ์นี้จะเรียกทั้งสองวิธีสตริงแรกที่พิมพ์ไปยังคอนโซลและสตริงที่สองที่จะพิมพ์ไปยังไฟล์:

การใช้ระบบ
โดยใช้ System.IO;

DelegateAppl namespace
{
   ระดับ PrintString
   {
      FS FileStream คง;
      SW StreamWriter คง;
      // ใบมอบฉันทะของผู้ร่วมประชุมโมฆะสาธารณะ printString (String s)

      // วิธีนี้พิมพ์ไปยังคอนโซลสาธารณะ WriteToScreen โมฆะคงที่ (สตริง STR)
      {
         Console.WriteLine ( "สตริง: {0}", STR);
      }
      // วิธีนี้พิมพ์ไปยังแฟ้มประชาชนเป็นโมฆะคง WriteToFile (String s)
      {
         FS = FileStream ใหม่ ( "C: \\ message.txt"
         FileMode.Append, FileAccess.Write);
         SW = StreamWriter ใหม่ (FS);
         sw.WriteLine (s);
         sw.Flush ();
         sw.Close ();
         fs.Close ();
      }
      // วิธีนี้ผู้ร่วมประชุมเป็นพารามิเตอร์และใช้มันเพื่อเรียกวิธีประชาชนเป็นโมฆะคง sendString (printString PS)
      {
         PS ( "Hello World");
      }
      เป็นโมฆะคง main (String args [])
      {
         printString PS1 = printString ใหม่ (WriteToScreen);
         printString PS2 = printString ใหม่ (WriteToFile);
         sendString (PS1);
         sendString (PS2);
         Console.ReadKey ();
      }
   }
}

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

สตริง: Hello World