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 # คลาส (Class)

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

การกำหนดระดับ

ความหมายของการเรียนคือการเริ่มต้นตามด้วยชื่อชั้นของชั้นคำหลักร่างกายของชั้นที่มีอยู่ภายในคู่ของวงเล็บปีกกา ต่อไปนี้เป็นรูปแบบทั่วไปของคำนิยามคลาส:

<เข้าถึงระบุ> CLASS_NAME ระดับ 
{
    // ตัวแปรสมาชิก
    <เข้าถึงระบุ> <ชนิดข้อมูล> variable1;
    <เข้าถึงระบุ> <ชนิดข้อมูล> variable2;
    ...
    <เข้าถึงระบุ> <ชนิดข้อมูล> variablen;
    // วิธีการเป็นสมาชิก
    <เข้าถึงระบุ> <ประเภทกลับ> method1 (parameter_list) 
    {
        // ร่างกายวิธี 
    }
    <เข้าถึงระบุ> <ประเภทกลับ> Method2 (parameter_list) 
    {
        // ร่างกายวิธี 
    }
    ...
    <เข้าถึงระบุ> <ประเภทกลับ> methodN (parameter_list) 
    {
        // ร่างกายวิธี 
    }
}

โปรดทราบ:

  • การเข้าถึงตัวบ่งชี้ <เข้าถึงระบุ> ระบุระดับกฎการเข้าถึงและสมาชิก หากไม่มีการระบุตัวระบุการเข้าถึงเริ่มต้นระดับเริ่มต้นการเข้าถึงตัวบ่งชี้คือภายในเริ่มต้นสมาชิกเข้าถึงตัวระบุความเป็นส่วนตัว
  • ชนิดข้อมูล <ชนิดข้อมูล> ระบุประเภทของตัวแปรประเภทผลตอบแทน <กลับ type> ระบุประเภทของข้อมูลที่ส่งกลับโดยผลตอบแทนที่วิธีการ
  • หากคุณต้องการที่จะเข้าถึงสมาชิกของชั้นเรียนที่คุณต้องการใช้จุด (.) ผู้ประกอบการ
  • ผู้ประกอบการจุดเชื่อมโยงชื่อของชื่อและสมาชิกของวัตถุ

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

การใช้ระบบ
namespace BoxApplication
{
    กล่องชั้น
    {
       ความยาวของประชาชนคู่; // ความยาวความกว้างคู่ประชาชน; // ความกว้างความสูงคู่ประชาชน; // สูง}
    ระดับ Boxtester
    {
        เป็นโมฆะคง main (String args [])
        {
            กล่อง box1 = ใหม่กล่อง (); // ประกาศ box1 ชนิดกล่อง
            กล่อง box2 = ใหม่กล่อง (); // ประกาศ box2 ชนิดกล่อง
            ปริมาณคู่ = 0.0; // // ปริมาณ box1 รายละเอียด Box1.height = 5.0;
            Box1.length = 6.0;
            Box1.breadth = 7.0;

            // box2 รายละเอียด Box2.height = 10.0;
            Box2.length = 12.0;
            Box2.breadth = 13.0;
           
            // box1 ปริมาณปริมาณ = Box1.height * * * * * * * * Box1.length Box1.breadth;
            Console.WriteLine ( "ปริมาณ box1: {0}" ปริมาณ);

            // box2 ปริมาณปริมาณ = Box2.height * * * * * * * * Box2.length Box2.breadth;
            Console.WriteLine ( "ปริมาณ box2: {0}" ปริมาณ);
            Console.ReadKey ();
        }
    }
}

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

ปริมาณ box1: 210
ปริมาณ box2: 1560

ฟังก์ชั่นและแพคเกจที่เป็นสมาชิก

ฟังก์ชั่นสมาชิกชั้นเรียนมันเป็นคำนิยามหรือฟังก์ชั่นต้นแบบในการกำหนดระดับเช่นเดียวกับตัวแปรอื่น ๆ ในฐานะที่เป็นสมาชิกของชั้นเรียนที่จะสามารถดำเนินการในระดับวัตถุใด ๆ ที่สมาชิกทุกคนและสามารถเข้าถึงระดับของวัตถุ

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

ลองใช้แนวคิดดังกล่าวข้างต้นการตั้งค่าและรับค่าของชนิดที่แตกต่างกันของสมาชิกในชั้นเรียน:

การใช้ระบบ
namespace BoxApplication
{
    กล่องชั้น
    {
       ความยาวคู่ส่วนตัว; // ความยาวความกว้างสองส่วนตัว; // ความกว้างความสูงคู่ส่วนตัว; // สูงโมฆะสาธารณะ SetLength (เลนคู่)
       {
            ความยาว = len;
       }

       โมฆะสาธารณะ setBreadth (BRE คู่)
       {
            ความกว้าง = BRE;
       }

       โมฆะสาธารณะ setHeight (Hei คู่)
       {
            height = Hei;
       }
       ประชาชนคู่ getVolume ()
       {
           ผลตอบแทนยาว * กว้าง * สูง;
       }
    }
    ระดับ Boxtester
    {
        เป็นโมฆะคง main (String args [])
        {
            กล่อง box1 = ใหม่กล่อง (); // ประกาศ box1 ชนิดกล่อง
            กล่อง box2 = ใหม่กล่อง (); // ประกาศ box2 ชนิดกล่อง
            ปริมาณคู่; // // box1 ปริมาณรายละเอียด Box1.setLength (6.0);
            Box1.setBreadth (7.0);
            Box1.setHeight (5.0);

            // box2 รายละเอียด Box2.setLength (12.0);
            Box2.setBreadth (13.0);
            Box2.setHeight (10.0);
       
            // ปริมาณ box1 ของปริมาณ = Box1.getVolume ();
            Console.WriteLine ( "ปริมาณ box1: {0}" ปริมาณ);

            // ปริมาณ box2 ของปริมาณ = Box2.getVolume ();
            Console.WriteLine ( "ปริมาณ box2: {0}" ปริมาณ);
           
            Console.ReadKey ();
        }
    }
}

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

ปริมาณ box1: 210
ปริมาณ box2: 1560

C # ก่อสร้าง

คอนสตรัคของชั้นเป็นฟังก์ชันสมาชิกชั้นพิเศษดำเนินการเมื่อมีการสร้างวัตถุชั้นใหม่

ชื่อชื่อของคอนสตรัคชั้นตรงเดียวกันก็มีประเภทกลับไม่มี

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงแนวคิดของการสร้างไปนี้:

การใช้ระบบ
LineApplication namespace
{
   สายชั้น
   {
      ความยาวคู่ส่วนตัวความยาวของเส้นสายสาธารณะ // ()
      {
         Console.WriteLine ( "วัตถุได้ถูกสร้างขึ้น");
      }

      โมฆะสาธารณะ SetLength (เลนคู่)
      {
         ความยาว = len;
      }
      GetLength คู่สาธารณะ ()
      {
         ความยาวกลับมา
      }

      เป็นโมฆะคง main (String args [])
      {
         บรรทัดบรรทัดบรรทัดใหม่ = ();    
         // ตั้ง line.setLength ความยาวสาย (6.0);
         Console.WriteLine ( "ความยาวของเส้น: {0}" line.getLength ());
         Console.ReadKey ();
      }
   }
}

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

วัตถุที่สร้างความยาวสาย: 6

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

การใช้ระบบ
LineApplication namespace
{
   สายชั้น
   {
      ความยาวคู่ส่วนตัวความยาวของเส้นสายสาธารณะ (เลนคู่) // // สร้างแบบ parameterized {
         Console.WriteLine ( "วัตถุได้ถูกสร้างขึ้น, ความยาว = {0}" เลน);
         ความยาว = len;
      }

      โมฆะสาธารณะ SetLength (เลนคู่)
      {
         ความยาว = len;
      }
      GetLength คู่สาธารณะ ()
      {
         ความยาวกลับมา
      }

      เป็นโมฆะคง main (String args [])
      {
         บรรทัดบรรทัดบรรทัดใหม่ = (10.0);
         Console.WriteLine ( "ความยาวของเส้น: {0}" line.getLength ()); 
         // ตั้ง line.setLength ความยาวสาย (6.0);
         Console.WriteLine ( "ความยาวของเส้น: {0}" line.getLength ()); 
         Console.ReadKey ();
      }
   }
}

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

วัตถุได้ถูกสร้างขึ้น, ความยาว = 10
ความยาวสาย: 10
ความยาวสาย: 6

ใน C # destructor

ระดับdestructor เป็นฟังก์ชันสมาชิกชั้นพิเศษเมื่อชนิดของวัตถุอยู่นอกช่วง

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

Destructor สำหรับการสิ้นสุดของโปรแกรม (เช่นการปิดไฟล์ไปยังหน่วยความจำฟรี ฯลฯ ) ก่อนที่จะมีการเปิดตัวของทรัพยากร destructors ไม่สามารถจะได้รับมรดกหรือมากเกินไป

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงแนวคิดของ destructor นี้:

การใช้ระบบ
LineApplication namespace
{
   สายชั้น
   {
      ความยาวส่วนตัวคู่ความยาวของเส้นสายสาธารณะ // () {// คอนสตรัค
         Console.WriteLine ( "วัตถุได้ถูกสร้างขึ้น");
      }
      ~ สาย () {// destructor
         Console.WriteLine ( "วัตถุได้ถูกลบออก");
      }

      โมฆะสาธารณะ SetLength (เลนคู่)
      {
         ความยาว = len;
      }
      GetLength คู่สาธารณะ ()
      {
         ความยาวกลับมา
      }

      เป็นโมฆะคง main (String args [])
      {
         บรรทัดบรรทัดบรรทัดใหม่ = ();
         // ตั้ง line.setLength ความยาวสาย (6.0);
         Console.WriteLine ( "ความยาวของเส้น: {0}" line.getLength ());           
      }
   }
}

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

วัตถุที่สร้างความยาวสาย: 6
วัตถุที่ถูกลบ 

C # ระดับสมาชิกคง

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

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

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการใช้ตัวแปรคง:

การใช้ระบบ
StaticVarApplication namespace
{
    ระดับ StaticVar
    {
       ประชาชน NUM int คง;
        นับโมฆะสาธารณะ ()
        {
            NUM ++;
        }
        int สาธารณะ getNum ()
        {
            กลับ NUM;
        }
    }
    ระดับ StaticTester
    {
        เป็นโมฆะคง main (String args [])
        {
            StaticVar S1 = StaticVar ใหม่ ();
            StaticVar S2 = StaticVar ใหม่ ();
            s1.count ();
            s1.count ();
            s1.count ();
            s2.count ();
            s2.count ();
            s2.count ();         
            Console.WriteLine ( "NUM ตัวแปร S1: {0}" s1.getNum ());
            Console.WriteLine ( "NUM ตัวแปร S2: {0}" s2.getNum ());
            Console.ReadKey ();
        }
    }
}

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

NUM ตัวแปร S1: 6
NUM ตัวแปร S2: 6

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

การใช้ระบบ
StaticVarApplication namespace
{
    ระดับ StaticVar
    {
       ประชาชน NUM int คง;
        นับโมฆะสาธารณะ ()
        {
            NUM ++;
        }
        int สาธารณะคง getNum ()
        {
            กลับ NUM;
        }
    }
    ระดับ StaticTester
    {
        เป็นโมฆะคง main (String args [])
        {
            StaticVar s = StaticVar ใหม่ ();
            s.count ();
            s.count ();
            s.count ();                   
            Console.WriteLine ( "NUM ตัวแปร: {0}" StaticVar.getNum ());
            Console.ReadKey ();
        }
    }
}

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

NUM ตัวแปร: 3