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 # คุณสมบัติ (Attribute)

ลักษณะ (Attribute) เป็นโปรแกรมสำหรับถ่ายโอนองค์ประกอบต่างๆ (เช่นการเรียนวิธีการโครงสร้าง enumerations, ส่วนประกอบอื่น ๆ ) ในลักษณะการทำงานเวลาทำงานของข้อมูลของแท็กเปิดเผยคุณสามารถเพิ่มข้อมูลที่เปิดเผยในการเขียนโปรแกรมโดยใช้คุณลักษณะ ฉลากคำสั่งถูกนำไปใช้โดยการวางไว้ในด้านหน้าขององค์ประกอบในวงเล็บ ([]) เพื่ออธิบาย

ลักษณะ (Attribute) เพื่อเพิ่มเมตาดาต้าเช่นคำแนะนำและความคิดเห็นของคอมไพเลอร์, คำอธิบายวิธีการข้อมูลเพิ่มเติมและอื่น ๆ .NET Framework ที่มีสองประเภทของคุณสมบัติ:คุณสมบัติที่กำหนดไว้ล่วงหน้าและคุณสมบัติที่กำหนดเอง

คุณสมบัติที่กำหนดไว้ (Attribute)

คุณสมบัติที่กำหนดไว้ (Attribute) ไวยากรณ์ต่อไปนี้:

[แอตทริบิวต์ (positional_parameters, name_parameter = ค่า, ... )]
ธาตุ

ลักษณะชื่อและค่า (Attribute) ที่ระบุไว้ภายในวงเล็บวางไว้ก่อนองค์ประกอบที่จะนำไปใช้ positional_parameters ที่กำหนดไว้ข้อมูลที่จำเป็น, name_parameter ที่กำหนดไว้ข้อมูลทางเลือก

แอตทริบิวต์ที่กำหนดไว้ล่วงหน้า (Attribute)

.NET Framework ที่มีสามคุณลักษณะที่กำหนดไว้ล่วงหน้า:

  • AttributeUsage
  • เงื่อนไข
  • ล้าสมัย

AttributeUsage

ที่กำหนดไว้ล่วงหน้าแอตทริบิวต์AttributeUsage อธิบายวิธีการใช้ชั้นแอตทริบิวต์ที่กำหนดเองมันระบุชนิดของคุณสมบัติที่สามารถนำไปใช้กับโครงการ

บทบัญญัติของคุณลักษณะนี้มีไวยากรณ์ต่อไปนี้:

[AttributeUsage (
   validon,
   AllowMultiple = allowmultiple,
   ได้รับมรดกสืบทอดมา =
)]

ประเด็น:

  • พารามิเตอร์ที่กำหนดไว้ Validon องค์ประกอบภาษาลักษณะที่สามารถวาง มันคือการรวมของมูลค่า enumeratorsAttributeTargetsค่าเริ่มต้นคือAttributeTargets.All
  • พารามิเตอร์allowmultiple (ถ้ามี)ให้ค่าบูลีนสำหรับทรัพย์สินAllowMultipleทรัพย์สิน (ทรัพย์สิน) ถ้าเป็นจริงแล้วคุณลักษณะนี้จะมีประโยชน์มากขึ้น ค่าเริ่มต้นเป็นเท็จ (ใช้เพียงครั้งเดียว)
  • พารามิเตอร์ที่สืบทอดมา (ถ้ามี)ให้ค่าบูลีนสำหรับอสังหาริมทรัพย์สืบทอด (ทรัพย์สิน) ถ้าเป็นจริงแห่งนี้เป็นคลาสที่ได้รับสามารถสืบทอด ค่าเริ่มต้นเป็นเท็จ (ไม่ได้รับมรดก)

ตัวอย่างเช่น:

[AttributeUsage (AttributeTargets.Class |
AttributeTargets.Constructor |
AttributeTargets.Field |
AttributeTargets.Method |
AttributeTargets.Property, 
AllowMultiple = true)]

เงื่อนไข

คุณลักษณะนี้นับเป็นวิธีการเงื่อนไขที่กำหนดไว้ล่วงหน้าการดำเนินงานขึ้นอยู่กับตัวระบุ preprocessing ด้านบน

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

บทบัญญัติของคุณลักษณะนี้มีไวยากรณ์ต่อไปนี้:

[เงื่อนไข (
   conditionalSymbol
)]

ตัวอย่างเช่น:

[เงื่อนไข ( "แก้ปัญหา")]

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงคุณลักษณะนี้:

DEBUG #define
การใช้ระบบ
using System.Diagnostics;
MyClass class สาธารณะ
{
    [เงื่อนไข ( "แก้ปัญหา")]
    ข้อความสาธารณะคงเป็นโมฆะ (String MSG)
    {
        Console.WriteLine (MSG);
    }
}
ทดสอบระดับ
{
    เป็นโมฆะคง Function1 ()
    {
        Myclass.Message ( "ในการทำงาน 1. ");
        function2 ();
    }
    เป็นโมฆะคง function2 ()
    {
        Myclass.Message ( "ในการทำงาน 2. ");
    }
    ประชาชนเป็นโมฆะคง Main ()
    {
        Myclass.Message ( "ในฟังก์ชั่นหลัก.");
        Function1 ();
        Console.ReadKey ();
    }
}

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

ในฟังก์ชั่นหลัก
ในฟังก์ชั่น 1
ในฟังก์ชั่น 2

ล้าสมัย

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

บทบัญญัติของคุณลักษณะนี้มีไวยากรณ์ต่อไปนี้:

[เลิก (
   ข่าวสาร
)]
[เลิก (
   ข้อความ
   ISERROR
)]

ประเด็น:

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

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงคุณลักษณะนี้:

การใช้ระบบ
MyClass class สาธารณะ
{
   [เลิก ( "อย่าใช้ OldMethod ใช้ NewMethod แทน" จริง)]
   เป็นโมฆะคง OldMethod ()
   { 
      Console.WriteLine ( "มันเป็นวิธีเก่า");
   }
   เป็นโมฆะคง NewMethod ()
   { 
      Console.WriteLine ( "มันเป็นวิธีการใหม่"); 
   }
   ประชาชนเป็นโมฆะคง Main ()
   {
      OldMethod ();
   }
}

เมื่อคุณพยายามที่จะรวบรวมโปรแกรมคอมไพเลอร์ที่จะทำให้ข้อผิดพลาดเซน:

 อย่าใช้ OldMethod ใช้ NewMethod แทน

แอตทริบิวต์ที่กำหนดเองสร้าง (Attribute)

.NET Framework ที่ช่วยให้คุณสร้างคุณสมบัติแบบกำหนดเองสำหรับการจัดเก็บข้อมูลที่เปิดเผยและสามารถเรียกดูได้ที่รันไทม์ ข้อมูลเหล่านี้จะขึ้นอยู่กับเกณฑ์การออกแบบและการประยุกต์ใช้จะต้องมีองค์ประกอบที่เกี่ยวข้องกับเป้าหมายใด ๆ

สร้างและใช้คุณสมบัติที่กำหนดเองรวมถึงขั้นตอนที่สี่:

  • คุณสมบัติของคำสั่งที่กำหนดเอง
  • สร้างคุณสมบัติแบบกำหนดเอง
  • สมัครคุณสมบัติแบบกำหนดเองในองค์ประกอบโปรแกรมเป้าหมาย
  • การเข้าถึงผ่านลักษณะการสะท้อน

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

คุณสมบัติของคำสั่งที่กำหนดเอง

มีคุณสมบัติให้กำหนดเองใหม่จะได้รับจากระดับSystem.Attributeตัวอย่างเช่น:

แก้ไขข้อผิดพลาด // แอตทริบิวต์ที่กำหนดเองได้รับมอบหมายในชั้นเรียนและสมาชิก [AttributeUsage (AttributeTargets.Class |
AttributeTargets.Constructor |
AttributeTargets.Field |
AttributeTargets.Method |
AttributeTargets.Property,
AllowMultiple = true)]

DeBugInfo ระดับส่วนกลาง: System.Attribute

ในรหัสข้างต้นเราได้ประกาศแอตทริบิวต์ที่กำหนดเองที่มีชื่อของDeBugInfo

สร้างคุณสมบัติแบบกำหนดเอง

ให้เราสร้างแอตทริบิวต์ที่กำหนดเองที่มีชื่อว่าDeBugInfo ข้อมูลจะถูกเก็บไว้ในการดีบักคุณลักษณะที่ได้รับมันเก็บข้อมูลต่อไปนี้:

  • หมายเลขรหัสข้อผิดพลาด
  • นักพัฒนารู้จักชื่อของข้อผิดพลาดที่
  • วันสุดท้ายของการตรวจสอบรหัส
  • นักพัฒนาที่เก็บข้อความสตริงทำเครื่องหมาย

DeBugInfoสามชั้นแรกของเราจะนำไปใช้ในการจัดเก็บข้อมูลที่สามทรัพย์สินส่วนตัว (ทรัพย์สิน) และมีทรัพย์สินของประชาชนในการจัดเก็บข้อความ (ทรัพย์สิน) ดังนั้นชื่อหมายเลขข้อผิดพลาดของนักพัฒนาและวันที่ของการตรวจสอบจะต้องวางตำแหน่งระดับ DeBugInfo (ตำแหน่ง) พารามิเตอร์ข้อความเป็นชื่อตัวเลือก (ชื่อ) พารามิเตอร์

สถานที่ให้บริการแต่ละคนจะต้องมีอย่างน้อยหนึ่งตัวสร้าง ตำแหน่งที่ต้องการ (ตำแหน่ง) พารามิเตอร์ที่ควรจะผ่านไปได้โดยสร้าง รหัสต่อไปนี้แสดงให้เห็นถึงประเภทDeBugInfo:

แก้ไขข้อผิดพลาด // แอตทริบิวต์ที่กำหนดเองได้รับมอบหมายในชั้นเรียนและสมาชิก [AttributeUsage (AttributeTargets.Class |
AttributeTargets.Constructor |
AttributeTargets.Field |
AttributeTargets.Method |
AttributeTargets.Property,
AllowMultiple = true)]

DeBugInfo ระดับส่วนกลาง: System.Attribute
{
  ส่วนตัว int Bugno;
  นักพัฒนา String เอกชน
  lastReview String เอกชน
  ข้อความสาธารณะ String;

  ประชาชน DeBugInfo (BG int สตริง dev สตริง D)
  {
      this.bugNo = BG;
      this.developer = dev;
      this.lastReview = d;
  }

  int สาธารณะ Bugno
  {
      ได้รับ
      {
          กลับ Bugno;
      }
  }
  ผู้พัฒนาสตริงสาธารณะ
  {
      ได้รับ
      {
          กลับนักพัฒนา;
      }
  }
  สาธารณะ String LastReview
  {
      ได้รับ
      {
          กลับ lastReview;
      }
  }
  สาธารณะ String ข้อความ
  {
      ได้รับ
      {
          ข้อความกลับมา
      }
      ชุด
      {
          ข้อความ value =;
      }
  }
}

สมัครคุณสมบัติแบบกำหนดเอง

โดยการวางคุณสมบัติทันทีก่อนเป้าหมายที่จะใช้คุณลักษณะนี้:

[DeBugInfo (45, "ซาร่าอาลี", "2012/12/08" ข้อความ = "กลับไม่ตรงกันชนิด")]
[DeBugInfo (49 "Nuha อาลี", "10/10/2012" ข้อความ = "ตัวแปรที่ไม่ได้ใช้")]
ระดับสี่เหลี่ยมผืนผ้า
{
  // ตัวแปรสมาชิกที่มีการป้องกันความยาวคู่
  การป้องกันความกว้างคู่
  สี่เหลี่ยมผืนผ้าสาธารณะ (L คู่คู่ W)
  {
      ความยาว = l;
      width = W;
  }
  [DeBugInfo (55, "ซาร่าอาลี", "19/10/2012"
  ข้อความ = "กลับไม่ตรงกันชนิด")]
  GetArea คู่สาธารณะ ()
  {
      กลับความยาวความกว้าง *;
  }
  [DeBugInfo (56, "ซาร่าอาลี", "19/10/2012")]
  โมฆะสาธารณะจอแสดงผล ()
  {
      Console.WriteLine ( "ความยาว: {0}", ความยาว);
      Console.WriteLine ( "ความกว้าง: {0}" กว้าง);
      Console.WriteLine ( "พื้นที่: {0}" GetArea ());
  }
}

ในบทต่อไปเราจะใช้วัตถุชั้นสะท้อนเพื่อดึงข้อมูลนี้