บทช่วยสอน C #: พื้นฐานที่คุณต้องใช้ในการฝึกฝน C #



บทความเกี่ยวกับบทช่วยสอน C # นี้จะช่วยให้คุณมีความรู้โดยละเอียดเกี่ยวกับกองทุน C # พร้อมกับตัวอย่างแบบเรียลไทม์เพื่อความเข้าใจที่ดีขึ้น

C # เป็นภาษาโปรแกรมอเนกประสงค์และมีประสิทธิภาพที่พัฒนาโดย Microsoft Corporation ในปี 2000 ในฐานะคู่แข่งที่ร้ายแรงของ Java เป็นที่นิยมมากที่สุดและเป็นภาษาการเขียนโปรแกรมที่มีอิทธิพลต่อทั้งการพัฒนาเว็บและการพัฒนาแอปพลิเคชันบนเดสก์ท็อป

ในบทช่วยสอน C # นี้เราจะเรียนรู้แนวคิดต่อไปนี้





พื้นฐาน C #

ความรู้เบื้องต้นเกี่ยวกับภาษาโปรแกรม C #

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



C#-Tutorial-hejlsberg_bio

ในปี 2000 Anders Hejlsberg และทีมไมโครซอฟต์ของเขาได้คิด C # ที่นิยมเรียกกันว่า C-Sharp ความคิดริเริ่มนี้ได้รับการรับรองจากองค์การมาตรฐานระหว่างประเทศ (ที่สำคัญ) และสมาคมผู้ผลิตคอมพิวเตอร์แห่งยุโรป (ECMA) และในที่สุด C # ก็เข้าสู่โลกแห่งการพัฒนาซอฟต์แวร์.

คุณสมบัติของภาษาโปรแกรม C #



  • ภาษาโปรแกรมเชิงวัตถุ

วิธีการเขียนโปรแกรมเชิงวัตถุเป็นสิ่งที่ทำให้ C # sharp เป็นโปรแกรมเมอร์ที่ใช้งานง่ายที่สุดและง่ายต่อการพัฒนาและบำรุงรักษาภาษาโปรแกรม

  • Type-Safe Language

ความหมายของ Type-Safe คือคอมไพเลอร์จะได้รับการเข้าถึงเฉพาะตำแหน่งหน่วยความจำที่ได้รับอนุญาตให้ดำเนินการ คุณลักษณะนี้ช่วยปรับปรุงความปลอดภัยของรหัสให้อยู่ในระดับเลขชี้กำลัง

  • ความสามารถในการทำงานร่วมกัน

คุณลักษณะของความสามารถในการทำงานร่วมกันทำให้ C # มีความสามารถเพียงพอที่จะทำทุกอย่างที่เป็นของ C ++ ได้อย่างมีประสิทธิภาพมากขึ้นซึ่งสามารถทำได้ดีกว่า C ++ เอง

  • Rich Library

C # ช่วยให้สามารถเข้าถึงไลบรารีในตัวจำนวนมากซึ่งมีฟังก์ชันการทำงานที่ตั้งโปรแกรมไว้ล่วงหน้าเพื่อลดเวลาที่ใช้ในกระบวนการพัฒนา

  • ปรับขนาดและอัปเดตได้

C # ได้รับการออกแบบมาให้เหนือกว่าภาษาโปรแกรมอื่น ๆ ดังนั้นจึงเปิดให้อัปเดตอยู่เสมอและยังคงปรับขนาดได้อย่างมากด้วยคุณสมบัติต่างๆ

  • เชิงส่วนประกอบ

นักพัฒนาของ Microsoft ใช้วิธีการตามส่วนประกอบเพื่อพัฒนา C # นี่เป็นวิธีการพัฒนาที่โดดเด่นที่สุดเพื่อให้ C # ปรับขนาดได้สูงและอัปเดต

  • ภาษาที่มีโครงสร้าง

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

  • เร็ว

การเขียนโปรแกรม C # มีความรวดเร็วในการรวบรวมและดำเนินการเมื่อเทียบกับ C ++ และภาษาโปรแกรมอื่น ๆ

การติดตั้ง

เป็นที่พิสูจน์แล้วว่า Microsoft Visual Studio เป็น Editor ที่ดีที่สุดในคลาสสำหรับการเขียนโปรแกรม C # เราจะติดตั้งและตั้งค่า Microsoft Visual Studio สำหรับเรียกใช้โปรแกรม C # ของเราโดยทำตามขั้นตอนที่ระบุด้านล่าง:

ขั้นตอนที่ 1 : ดาวน์โหลด Microsoft Visual Studio

Google สำหรับ Visual Studio เวอร์ชันล่าสุด และดาวน์โหลดไฟล์ ติดตั้ง ไฟล์ลงในระบบภายในของคุณจากนั้น วิ่ง ไฟล์ตัวติดตั้ง เป็น ผู้ดูแลระบบ

ขั้นตอนที่ 2: เลือก. NET Desktop Development Package

เมื่อคุณเรียกใช้โปรแกรมติดตั้งโปรแกรมแก้ไข Visual Studio จะถูกดาวน์โหลดลงในระบบภายในเครื่องของคุณสำเร็จหลังจากนั้นกล่องโต้ตอบจะปรากฏบนหน้าจอเดสก์ท็อปของคุณเพื่อถามศัตรู แพ็คเกจเฉพาะ ที่คุณต้องการในระบบของคุณ ที่นี่คุณต้องเลือกไฟล์ .NET การพัฒนาเดสก์ท็อป แพ็คเกจ

ขั้นตอนที่ 3: ตั้งค่าสภาพแวดล้อม C #

เมื่อแพ็คเกจของคุณสำหรับ .NET การพัฒนา ถูกดาวน์โหลดจากนั้นกล่องโต้ตอบอื่นจะปรากฏบนหน้าจอของคุณเพื่อขอสภาพแวดล้อมการพัฒนาที่คุณกำลังมองหา ที่นี่คุณต้อง เลือกสภาพแวดล้อมสำหรับ C #

ขั้นตอนที่ 4: สร้างโครงการแรกของคุณ

เมื่อกำหนดสภาพแวดล้อมแล้วคุณก็พร้อมที่จะไป เริ่ม Visual Studio ของคุณแล้วเลือก สร้างโครงการใหม่ ในกล่องโต้ตอบที่แสดง

คุณจะถูกเปลี่ยนเส้นทางไปยังกล่องโต้ตอบถัดไปและคุณต้องเลือกไลบรารีคลาสเป็น .NET มาตรฐาน ดังแสดงด้านล่าง

วิธีการสิ้นสุดโปรแกรม java

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

โดยใช้ System class Edureka {static void Main (string [] args) {Console.WriteLine ('Welcome to Edureka !, Happy Learning .. !')}}

// เอาต์พุต:

ให้เราดำเนินการโปรแกรม C # แรกของเรา

โครงสร้างโปรแกรม C #

ตอนนี้เราได้ดำเนินการโปรแกรม C # แรกของเราแล้วให้เราเข้าใจโครงสร้างโดยละเอียด โปรแกรม C # อย่างง่ายมีส่วนต่างๆดังต่อไปนี้

การใช้ System namespace ConsoleApplication1 {public class Edureka {public static void Main (string [] args) {Console.WriteLine ('Welcome to Edureka !, Happy Learning .. !')}}}

// เอาต์พุต:

ยินดีต้อนรับสู่ Edureka!, Happy Learning .. !

  • ชั้น: โดยทั่วไปสามารถกำหนดคลาสเป็นไฟล์ คำสำคัญ ที่ใช้กำหนดคลาสในโปรแกรม C #
  • Edureka: มันเป็นชื่อของ คลาส. คลาสมักถือเป็นพิมพ์เขียวที่เก็บสมาชิกและวิธีการที่เกี่ยวข้องกับคลาส
  • หลัก: โดยทั่วไปคือไฟล์ วิธีการหลัก ของโปรแกรม C # ทั้งหมดทำหน้าที่เป็นเกตเวย์สำหรับการควบคุมเพื่อเข้าสู่โปรแกรม มันได้รับการดำเนินการก่อนที่วิธีอื่น ๆ ของโปรแกรมจะถูกเรียกใช้งาน
  • เป็นโมฆะ: รหัสส่วนนี้ถูกกำหนดให้กับไฟล์ ประเภทผลตอบแทน ของวิธีการ สามารถเป็นประเภทข้อมูลใดก็ได้ที่ไม่ใช่โมฆะ โมฆะหมายถึงเมธอดไม่มีการส่งคืนข้อมูลใด ๆ
  • คงที่: มันคือ คำสำคัญ ซึ่งระบุว่าสมาชิกข้อมูลที่ประกาศเป็นแบบคงที่และมีการจัดสรรหน่วยความจำเฉพาะให้กับสมาชิกที่ประกาศ
  • สตริง [] args: คล้ายกับอาร์กิวเมนต์บรรทัดคำสั่งที่เราใช้ในโปรแกรมของเรา ในขณะที่เรารันโปรแกรมของเราโดยพื้นฐานแล้วเราจะผ่านบางส่วน ข้อโต้แย้ง ซึ่งจะได้รับการยอมรับจากโปรแกรมเนื่องจากคำสั่งนี้
  • System.Console.WriteLine (“ ยินดีต้อนรับสู่ Edureka!, Happy Learning .. !”) ที่นี่ ระบบ คือ เนมสเปซ คอนโซลคือหมวดหมู่ที่ระบุไว้ในเนมสเปซของระบบ เขียนบรรทัด () นั่นคือคงที่เทคนิคของ Consoleหมวดหมู่ที่ใช้ในการจดบันทึกข้อความบนคอนโซล

ตอนนี้ให้เราเรียนรู้ประเภทข้อมูลที่มีอยู่ใน C #

ประเภทข้อมูล

ประเภทข้อมูลใน C # แบ่งออกเป็นสามประเภทตามที่อธิบายไว้ด้านล่าง

ประเภทข้อมูลค่า

ประเภทข้อมูลค่า อยู่ใน System.ValueType ไลบรารีและพร้อมที่จะเข้าถึงได้โดยตรงเสมอและสามารถกำหนดตัวแปรให้กับค่าเฉพาะได้โดยตรง ประเภทข้อมูลค่ายังแบ่งออกเป็นสองประเภทดังที่แสดงด้านล่าง:

  • ประเภทข้อมูลที่กำหนดไว้ล่วงหน้า
  • ประเภทข้อมูลที่ผู้ใช้กำหนดเอง

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

ตัวอย่าง:

int, float, char, short double ฯลฯ

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

ตัวอย่าง: โครงสร้าง Enum

ประเภทข้อมูล ช่วงของหน่วยความจำที่จัดสรร ขนาดหน่วยความจำ
ลงนามถ่าน -128 ถึง 127 1 ไบต์
ถ่านที่ไม่ได้ลงนาม 0 ถึง 127 1 ไบต์
ถ่าน -128 ถึง 127 1 ไบต์
เซ็นสั้น -32,768 ถึง 32,767 2 ไบต์
สั้นไม่ได้ลงนาม 0 ถึง 65,535 2 ไบต์
สั้น -32,768 ถึง 32,767 2 ไบต์
ลงนาม int -2,147,483,648 ถึง -2,147,483,647 4 ไบต์
int ที่ไม่ได้ลงนาม 0 ถึง 4,294,967,295 4 ไบต์
int -2,147,483,648 ถึง -2,147,483,647 4 ไบต์
เซ็นยาว -9,223,372,036,854,775,808 ถึง 9,223,372,036,854,775,807 8 ไบต์
ไม่ได้ลงนามยาว 0 ถึง 18,446,744,073,709,551,615 8 ไบต์
ยาว -9,223,372,036,854,775,808 ถึง 9,223,372,036,854,775,807 8 ไบต์
ลอย 1.5 * 10-45 - 3.4 * 1038 (ความแม่นยำ 7 หลัก) 4 ไบต์
สองเท่า 5.0 * 10-324 - 1.7 * 10308 (ความแม่นยำ 15 หลัก) 8 ไบต์
ทศนิยม -7.9 * 10-28 - 7.9 * 1028 (ความแม่นยำ 28 หลัก) 16 ไบต์


ประเภทข้อมูลตัวชี้

Pointer Type เป็นประเภทข้อมูลที่เรียบง่าย ฟังก์ชันการทำงานคล้ายกับตัวชี้ใน C โดยสิ้นเชิงโดยออกแบบมาเพื่อเก็บที่อยู่ของตัวชี้อื่น

ลอย * ptr

ประเภทข้อมูลอ้างอิง

ชื่อเป็นตัวอธิบาย ประเภทข้อมูลอ้างอิง ที่จริงไม่เก็บตัวแปร แต่จะเก็บค่าอ้างอิงของตัวแปรนั้น ๆ แทน กล่าวอีกนัยหนึ่งคือเก็บที่อยู่ของตัวแปรจริง

ตัวแปรอ้างอิงแบ่งออกเป็นสามประเภทดังที่กล่าวไว้ด้านล่าง:

  • ประเภทวัตถุ

Object Datatype มีอยู่ในไฟล์ System.Object คลาส.วัตถุประเภทเป็นไปได้มอบหมายให้กับค่าของประเภทอื่น ๆเอกสารอ้างอิงประเภท, กำหนดไว้ล่วงหน้า, ผู้ใช้กำหนดเองประเภท. แต่ก่อนมอบหมายค่ามันต้องการ ประเภท การแปลง

วัตถุ abc abc = 50 // สิ่งนี้เรียกว่าการชกมวย
  • ประเภทไดนามิก

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

ไดนามิก x = 10
  • ประเภทสตริง

ประเภทสตริงมีอยู่ใน System.String ชั้นเรียน. ประเภทสตริงถูกออกแบบมาเพื่อจัดเก็บตัวอักษรสตริง String Literals ถูกเก็บไว้ในสองรูปแบบในสองรูปแบบ

    • ยกมา
    • @ อ้าง.
สตริง S = 'Edureka'
  • @ อ้าง ตัวอักษรสตริงดูเหมือน
@ 'เอดูเรก้า'

ตอนนี้ให้เราเข้าใจตัวแปร

ตัวแปร

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

ประเภท ตัวอย่าง
Null ข้อมูลว่าง
บูลีน จริงและเท็จ
จำนวนเต็ม Int, Char, Byte, สั้น, ยาว
ลอย Float และ Double
ทศนิยม ทศนิยม

ตัวอย่าง:

int a, b double x float p ถ่าน abc

กฎที่ต้องปฏิบัติตามเพื่อประกาศตัวแปรใน C #

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

ตัวดำเนินการ

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

  • ตัวดำเนินการเลขคณิต
  • ตัวดำเนินการเชิงสัมพันธ์
  • ตัวดำเนินการทางตรรกะ
  • ตัวดำเนินการ Bitwise
  • ผู้ดำเนินการมอบหมาย

ตัวดำเนินการเลขคณิต

ตัวดำเนินการ ตัวอย่าง คำอธิบาย
+ A + B เพิ่มตัวดำเนินการสองตัว
- ก - ข Sub บทคัดย่อสอง Operands
* ก * ข ทวีคูณสองตัวดำเนินการ
/ ก / ข หารสองโอเปร่า
% ก% ข ส่วนที่เหลือของ Two Operands
++ A ++ การดำเนินการที่เพิ่มขึ้น
- ถึง- การดำเนินการลดลง

ตัวดำเนินการเชิงสัมพันธ์

ตัวดำเนินการ ตัวอย่าง คำอธิบาย
== A == ข จริงถ้าตัวถูกดำเนินการทั้งสองเท่ากัน Else False
! = ก! = ข จริงถ้าตัวถูกดำเนินการทั้งสองไม่เท่ากัน Else False
> ก> ข จริงถ้า A เป็นมากกว่าเท็จ
< ถึง จริงถ้า B เป็นมากกว่าเท็จ
> = A> = B จริงถ้า A มากกว่าหรือเท่ากัน Else False
<= ถึง<= B จริง id B มีค่าเท่ากันมากขึ้น Else False

ตัวดำเนินการทางตรรกะ

ตัวดำเนินการ ตัวอย่าง คำอธิบาย
&& เอแอนด์แอนด์บี จริงถ้าตัวถูกดำเนินการทั้งสองเป็นจริง Else False
|| A || ข จริงถ้าหนึ่งในตัวถูกดำเนินการเป็นจริง Else False
! ก! ข กลับสถานะตรรกะของตัวถูกดำเนินการ

ตัวดำเนินการ Bitwise

ถึง A & B A | ข ก ^ ข
หนึ่ง หนึ่ง หนึ่ง หนึ่ง 0
หนึ่ง 0 0 หนึ่ง หนึ่ง
0 หนึ่ง 0 หนึ่ง หนึ่ง
0 0 0 0 0
ตัวดำเนินการ ตัวอย่าง คำอธิบาย
~ (~ ก) Binary One’s Complement Operator เป็นเอกภาพและมีผลของบิต 'พลิก'
<< ถึง<<2 ตัวดำเนินการกะไบนารีด้านซ้าย ค่าตัวถูกดำเนินการด้านซ้ายจะถูกย้ายไปทางซ้ายตามจำนวนบิตที่ระบุโดยตัวถูกดำเนินการด้านขวา
>> ก >> 2 ตัวดำเนินการกะไบนารีขวา ค่าตัวถูกดำเนินการด้านซ้ายจะถูกย้ายไปทางขวาตามจำนวนบิตที่ระบุโดยตัวถูกดำเนินการด้านขวา

ผู้ดำเนินการมอบหมาย

ตัวดำเนินการ ตัวอย่าง คำอธิบาย
= A = B + C A = B + C, B + C ถูกกำหนดให้กับ A
+ = A + = B A = A + B, A + B ถูกกำหนดให้กับ A
- = ก - = ข A = A-B, A-B ถูกกำหนดให้กับ A
* = ก - = ข A = A * B, A * B ถูกกำหนดให้กับ A
/ = ก / = ข A = A / B, A / B ถูกกำหนดให้กับ A
% = ก% = ข A = A% B, A% B ถูกกำหนดให้กับ A
<<= ถึง<<= 2 Shift ซ้ายและตัวดำเนินการมอบหมาย
>> = A >> = 2 ตัวดำเนินการ Shift และ Assignment ขวา
& = A & = 2 Bitwise และ Assignment Operator
^ = A ^ = 2 Bitwise Exclusive และ Assignment Operator
| = ก! = 2 Bitwise Inclusive และ Assignment Operator

ลูป

ถึง วน คำสั่งใช้สำหรับดำเนินการบล็อกคำสั่งซ้ำ ๆ จนกว่าเงื่อนไขเฉพาะจะเป็นที่พอใจ ภาษา C # ประกอบด้วยคำสั่ง Loop ต่อไปนี้

  • สำหรับ Loop
  • ในขณะที่วนซ้ำ
  • ทำขณะวนซ้ำ

สำหรับ Loop

สำหรับห่วง ใช้เพื่อดำเนินการส่วนรหัสเฉพาะหลาย ๆ ครั้งจนกว่าเงื่อนไขที่กำหนดจะเป็นที่พอใจ

ไวยากรณ์

สำหรับ (เงื่อนไขการเริ่มต้นเพิ่มขึ้น / ลดลง) {// ส่วนรหัส}

FlowChart:

ตัวอย่าง:

การใช้คลาสระบบสาธารณะ ForExample {public static void Main (string [] args) {สำหรับ (int i = 1 i<= 5 i++) { Console.WriteLine(i) } } } 

// เอาต์พุต:

หนึ่ง
2
3
4
5

ในขณะที่วนซ้ำ

ในขณะที่วนซ้ำ ใช้ในการดำเนินการส่วนรหัสสำหรับหลาย ๆ ครั้งจนกว่าเงื่อนไขเฉพาะจะเป็นที่พอใจ

ไวยากรณ์

ในขณะที่ (เงื่อนไข) {// รหัสที่จะดำเนินการ}

FlowChart:

ตัวอย่าง:

การใช้ System namespace Loops {class Program {static void Main (string [] args) {int x = 5 while (x<= 10) { Console.WriteLine('The value of a: {0}', x) x++ } Console.ReadLine() } } } 

// เอาต์พุต:

ค่าของ a: 5
ค่าของ a: 6
ค่าของ a: 7
ค่าของ a: 8
ค่าของ a: 9
ค่าของ a: 10

ทำขณะวนซ้ำ

Do while loop นั้นคล้ายกับ While Loop อย่างสิ้นเชิง แต่ข้อแตกต่างเพียงอย่างเดียวคือเงื่อนไขจะถูกวางไว้ที่ส่วนท้ายของลูป ดังนั้นการวนซ้ำจะถูกดำเนินการอย่างน้อยหนึ่งครั้ง

ไวยากรณ์

ทำ {// code to beecute} while (condition)

FlowChart:

ตัวอย่าง:

การใช้ System namespace Edureka {class DoWhileLoop {public static void Main (string [] args) {int i = 1, n = 5, product do {product = n * i Console.WriteLine ('{0} * {1} = { 2} ', n, i, product) i ++} while (i<= 10) } } } 

// เอาต์พุต:

5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
5 * 10 = 50

เงื่อนไข

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

ประเภทต่างๆของ Conditional Statements ในภาษา C ++ มีดังนี้:

  1. ถ้าคำสั่ง
  2. คำสั่ง If-Else
  3. คำสั่ง If-else ที่ซ้อนกัน
  4. If-Else If บันได
  5. สลับคำสั่ง

ถ้าคำสั่ง

เดี่ยว ถ้า คำสั่งในภาษา C # ใช้ในการรันโค้ดหากเงื่อนไขเป็นจริง เรียกอีกอย่างว่าคำสั่งการเลือกทางเดียว

ไวยากรณ์

if (boolean-expression) {// คำสั่งดำเนินการถ้า boolean-expression เป็นจริง}

FlowChart:

ตัวอย่าง:

การใช้ System namespace Conditional {class IfStatement {public static void Main (string [] args) {int number = 2 if (number<5) { Console.WriteLine('{0} is less than 5', number) } Console.WriteLine('This statement is always executed.') } } } 

// เอาต์พุต:

2 น้อยกว่า 5
คำสั่งนี้จะถูกดำเนินการเสมอ

คำสั่ง If-Else

ถ้าอื่น คำสั่งในภาษา C ใช้ในการรันโค้ดหากเงื่อนไขเป็นจริงหรือเท็จ เรียกอีกอย่างว่า two-way selection statement

ไวยากรณ์

if (บูลีน - นิพจน์) {// คำสั่งดำเนินการหากบูลีน - นิพจน์เป็นจริง} else {// คำสั่งดำเนินการหากบูลีน - นิพจน์เป็นเท็จ}

FlowChart:

ตัวอย่าง:

การใช้ System namespace Conditional {class IfElseStatement {public static void Main (string [] args) {int number = 12 if (number<5) { Console.WriteLine('{0} is less than 5', number) } else { Console.WriteLine('{0} is greater than or equal to 5', number) } Console.WriteLine('This statement is always executed.') } } } 

// เอาต์พุต:

12 มากกว่าหรือเท่ากับ 5
คำสั่งนี้จะถูกดำเนินการเสมอ

คำสั่ง If-else ที่ซ้อนกัน

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

ไวยากรณ์

if (boolean-expression) {if (nested-expression-1) {// code to be executed} else {// code to beecute}} else {if (nested-expression-2) {// code to beecute } else {// code to beecute}}

FlowChart:

ตัวอย่าง:

การใช้ System namespace Conditional {class Nested {public static void Main (string [] args) {int first = 7, second = -23, third = 13 if (first & gt second) {if (first

// เอาต์พุต:

13 มีขนาดใหญ่ที่สุด

บันไดอื่น ๆ

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

ไวยากรณ์

if (condition1) {// code to beecute if condition1 is true} else if (condition2) {// code to beecute if condition2 is true} else if (condition3) {// code to beecute if condition3 is true} ... else {// โค้ดที่จะดำเนินการหากเงื่อนไขทั้งหมดเป็นเท็จ}

FlowChart:

ตัวอย่าง:

การใช้ System class Edureka {public static void Main (String [] args) {int i = 20 if (i == 10) Console.WriteLine ('i is 10') else if (i == 15) Console.WriteLine (' ฉันคือ 15 ') else if (i == 20) Console.WriteLine (' i is 20 ') else Console.WriteLine (' i is not present ')}}

// เอาต์พุต:

ฉันอายุ 20 ปี

สลับคำสั่ง

สวิตซ์ คำสั่งทำหน้าที่แทนแลดเดอร์ if-else-if แบบยาวที่ใช้เพื่อทดสอบรายการเคส คำสั่ง switch มีเลเบลเคสอย่างน้อยหนึ่งตัวซึ่งถูกทดสอบกับนิพจน์ของสวิตช์ เมื่อนิพจน์ตรงกับเคสคำสั่งที่เกี่ยวข้องกับเคสนั้นจะถูกดำเนินการ

ไวยากรณ์

สวิทช์ (ตัวแปร / นิพจน์) {case value1: // คำสั่งดำเนินการถ้านิพจน์ (หรือตัวแปร) = value1 ตัวแบ่ง case value2: // คำสั่งดำเนินการถ้านิพจน์ (หรือตัวแปร) = value1 break ... …… .. . ... ... default: // คำสั่งดำเนินการหากไม่ตรงกับกรณี}

FlowChart:

ตัวอย่าง:

การใช้ System namespace Conditional {class SwitchCase {public static void Main (string [] args) {char ch Console.WriteLine ('Enter an alphabet') ch = Convert ToChar (Console.ReadLine ()) สวิตช์ (Char ToLower (ch )) {case 'a': Console.WriteLine ('Vowel') break case 'e': Console.WriteLine ('Vowel') break case 'i': Console.WriteLine ('Vowel') break case 'o': Console.WriteLine ('Vowel') break case 'u': Console.WriteLine ('Vowel') ทำลาย default: Console.WriteLine ('Not a vowel') break}}}}

// เอาต์พุต:

ป้อนตัวอักษร
คือ
สระ

สตริง

สตริง ประเภทข้อมูลเป็นสมาชิกของ System.String คลาส. สามารถจัดเก็บข้อมูลประเภทอักขระได้ เราสามารถดำเนินการต่างๆบน Stings เช่นการเรียงต่อกันการเปรียบเทียบการรับสตริงย่อยการค้นหาการตัดแต่งการแทนที่และอื่น ๆ อีกมากมาย

การเปรียบเทียบของสตริงและสตริง

ใน C # สตริง และ สตริง เทียบเท่า สตริงคำคือ คำสำคัญ และทำหน้าที่เป็นไฟล์ System.String ชั้นเรียน. เราสามารถใช้เวอร์ชันใดเวอร์ชันหนึ่งเพื่อประกาศสตริง

ไวยากรณ์:

สตริง s1 = 'Edureka' // การสร้างสตริงโดยใช้คีย์เวิร์ดสตริง String s2 = 'Happy Learning' // การสร้างสตริงโดยใช้คลาส String

ตัวอย่าง:

โดยใช้ System public class StringExample {public static void Main (string [] args) {string s1 = 'Edureka' char [] ch = {'C', 's', 'h', 'a', 'r', ' p ',' ',' T ',' u ',' t ',' o ',' r ',' i ',' a ',' l '} สตริง s2 = สตริงใหม่ (ch) Console.WriteLine ( s1) Console.WriteLine (s2)}}

// เอาต์พุต:

Edureka
บทช่วยสอน Csharp

วิธีการสตริงใน C #

วิธี คำอธิบาย
โคลน () ใช้เพื่อส่งคืนการอ้างอิงไปยังอินสแตนซ์ของ String
เปรียบเทียบ (String, String) ใช้เพื่อเปรียบเทียบอ็อบเจ็กต์ String ที่ระบุสองรายการ
Concat (สตริงสตริง) เชื่อมต่อสองอินสแตนซ์ที่ระบุของ String
ประกอบด้วย (สตริง) ส่งคืนค่าที่ระบุสตริงย่อยที่ระบุ
คัดลอก (สตริง) ใช้เพื่อสร้างอินสแตนซ์ใหม่ของ String ที่มีค่าเดียวกัน
CopyTo (Int, Char [], Int, Int) คัดลอกอักขระจากตำแหน่งที่ระบุ
เท่ากับ (สตริงสตริง) กำหนดว่าอ็อบเจ็กต์ String สองรายการมีค่าเท่ากัน
รูปแบบ (String, Object) แทนที่รายการรูปแบบอย่างน้อยหนึ่งรายการในสตริงที่ระบุ
IndexOf (สตริง) รายงานดัชนีที่อิงศูนย์ของเหตุการณ์แรก
แทรก (Int32, สตริง) ส่งคืนสตริงใหม่ที่แทรกสตริงที่ดัชนี
IsInterned (สตริง) ระบุว่าสตริงนี้อยู่ใน Unicode normalization form C
IsNullOrEmpty (สตริง) ระบุว่าสตริงที่ระบุเป็น null หรือสตริงว่าง
IsNullOrWhiteSpace (สตริง) ใช้เพื่อระบุว่าสตริงที่ระบุเป็นโมฆะว่างเปล่า
เข้าร่วม (String, String []) ใช้เพื่อเชื่อมองค์ประกอบทั้งหมดของสตริงอาร์เรย์
LastIndexOf (ถ่าน) รายงานตำแหน่งดัชนีที่อิงเป็นศูนย์ของอักขระสุดท้าย
LastIndexOfAny (ถ่าน []) รายงานตำแหน่งดัชนีที่อิงเป็นศูนย์ของอักขระสุดท้าย
ลบ (Int32) ส่งคืนสตริงใหม่ที่อักขระทั้งหมด
แทนที่ (สตริงสตริง) ส่งคืนสตริงใหม่ที่เกิดขึ้นทั้งหมดของสตริง
แยก (Char []) ใช้เพื่อแยกสตริงออกเป็นสตริงย่อย
StartsWith (สตริง) ใช้เพื่อตรวจสอบว่าจุดเริ่มต้นของสตริงนี้หรือไม่
สตริงย่อย (Int32) ใช้เพื่อดึงสตริงย่อยจากอินสแตนซ์นี้
ToCharArray () คัดลอกอักขระในอินสแตนซ์นี้ไปยังอาร์เรย์ Unicode
ToString () ใช้เพื่อส่งคืนอินสแตนซ์ของ String
ตัดแต่ง () จดจ้องสตริง


อาร์เรย์

เช่นเดียวกับภาษาโปรแกรมอื่น ๆ C # มีอาร์เรย์ อาร์เรย์เป็นโครงสร้างข้อมูลอย่างง่ายที่ออกแบบมาเพื่อจัดเก็บองค์ประกอบประเภทข้อมูลเดียวกันในตำแหน่งหน่วยความจำที่อยู่ติดกัน

C # รองรับ Array ประเภทต่อไปนี้

  • อาร์เรย์มิติเดียว
  • อาร์เรย์หลายมิติ
  • อาร์เรย์ขรุขระ

อาร์เรย์มิติเดียว

อาร์เรย์มิติเดียวเก็บองค์ประกอบในรูปแบบของแถวเดียว

ไวยากรณ์

int [] arr = new int [5] // การสร้างอาร์เรย์

ตัวอย่าง:

โดยใช้คลาสระบบสาธารณะ ArrayExample {public static void Main (string [] args) {int [] arr = new int [5] arr [0] = 10 arr [1] = 20 arr [2] = 30 arr [3] = 40 arr [4] = 50 สำหรับ (int i = 0 i 

// เอาต์พุต:

10
ยี่สิบ
30
40
ห้าสิบ

อาร์เรย์หลายมิติ

อาร์เรย์หลายมิติเก็บองค์ประกอบในรูปแบบของหลายมิติเช่นเมทริกซ์และลูกบาศก์เป็นต้น

ไวยากรณ์

int val = a [2,3]

ตัวอย่าง:

โดยใช้ System namespace ArrayApplication {class MyArray {static void Main (string [] args) {int [,] a = new int [5, 2] {{0, 0}, {1, 2}, {2, 4}, {3, 6}, {4, 8}} int i, j สำหรับ (i = 0 i<5 i++) { for (j = 0 j < 2 j++) { Console.WriteLine('a[{0},{1}] = {2}', i, j, a[i, j]) } } Console.ReadKey() } } } 

// เอาต์พุต:

ก [0,0] = 0
ก [0,1] = 0
ก [1,0] = 1
ก [1,1] = 2
ก [2,0] = 2
ก [2,1] = 4
ก [3,0] = 3
ก [3,1] = 6
ก [4,0] = 4
ก [4,1] = 8

อาร์เรย์ขรุขระ

Jagged Array เป็นเพียงอาร์เรย์ของอาร์เรย์

ตัวอย่าง:

โดยใช้ System namespace ArrayApplication {class MyArray {static void Main (string [] args) {int [] [] a = new int [] [] {new int [] {0,0}, new int [] {1,2 }, int ใหม่ [] {2,4}, int ใหม่ [] {3, 6}, int ใหม่ [] {4, 8}} int i, j สำหรับ (i = 0 i<5 i++) { for (j = 0 j < 2 j++) { Console.WriteLine('a[{0}][{1}] = {2}', i, j, a[i][j]) } } Console.ReadKey() } } } 

// เอาต์พุต:

ก [0] [0] = 0
ก [0] [1] = 0
ก [1] [0] = 1
ก [1] [1] = 2
ก [2] [0] = 2
ก [2] [1] = 4
ก [3] [0] = 3
ก [3] [1] = 6
ก [4] [0] = 4
ก [4] [1] = 8

คอลเลกชัน

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

  • เก็บวัตถุ
  • อัปเดตวัตถุ
  • ลบวัตถุ
  • ดึงวัตถุ
  • ค้นหาวัตถุและ
  • จัดเรียงวัตถุ

ประเภทของคอลเลกชัน

มีสามความเป็นไปได้ในการทำงานกับคอลเลกชัน ทั้งสามเนมสเปซดังต่อไปนี้:

  • System.Collections.Generic ชั้นเรียน
  • System.Collections ชั้นเรียน
  • System.Collections.Concurrent ชั้นเรียน

System.Collections.Generic Class มีคลาสต่างๆดังต่อไปนี้:

  • รายการ
  • ซ้อนกัน
  • คิว
  • LinkedList
  • แฮชเซ็ต
  • SortedSet
  • พจนานุกรม
  • เรียงลำดับ
  • SortedList

System.Collections คลาสถือเป็นคลาสดั้งเดิม รวมถึงชั้นเรียนต่อไปนี้

  • ArrayList
  • ซ้อนกัน
  • คิว
  • Hashtable

System.Collections.Concurrent ชั้นเรียนเนมสเปซจัดเตรียมคลาสสำหรับการดำเนินการเธรดที่ปลอดภัย ตอนนี้หลายเธรดจะไม่สร้างปัญหาในการเข้าถึงรายการคอลเลกชัน ชั้นเรียนที่มีอยู่ในนี้คือ

  • BlockingCollection
  • กระเป๋าพร้อมกัน
  • ConcurrentStack
  • พร้อมกันคิว
  • พร้อมกัน
  • พาร์ทิชัน
  • พาร์ทิชัน
  • สั่งได้

รายการ

รายการ ถือเป็นโครงสร้างข้อมูลที่มีอยู่ใน System.Collection.Generics เนมสเปซ สามารถจัดเก็บและดึงองค์ประกอบ รายการนี้สามารถจัดเก็บองค์ประกอบที่ซ้ำกันได้

ตัวอย่าง:

โดยใช้ System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {var names = new List () names.Add ('Sandhya') names.Add ('Arun') names.Add ( 'Prashanth') ชื่อเพิ่ม ('Kiran') foreach (ชื่อตัวแปรในชื่อ) {Console.WriteLine (ชื่อ)}}}

// เอาต์พุต:

Sandhya
อรุณ
ปราชาน ธ
Kiran

ชุดแฮช

C # HashSetหมวดหมู่มักจะคุ้นเคยเก็บ,นำออกไปหรืออ่านส่วนประกอบ. มันไม่จัดเก็บซ้ำส่วนประกอบ.มันกระตุ้นใช้ แฮชเซ็ต ประเภทถ้าคุณได้เพื่อจัดเก็บแต่เพียงผู้เดียว โดดเด่น ส่วนประกอบ . มันคือ พบใน System.Collections.Generic namespace

ตัวอย่าง:

โดยใช้ System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {var names = new HashSet () names.Add ('Sunil') names.Add ('Amar') names.Add ( 'Pujari') ชื่อเพิ่ม ('อิมราน') ชื่อเพิ่ม ('karan') foreach (ชื่อตัวแปรในชื่อ) {Console.WriteLine (ชื่อ)}}}

// เอาต์พุต:

Sunil
อามาร์
ปูจารี
อิมราน
คาราน

ชุดเรียง

C # SortedSetชั้นเรียนมักจะคุ้นเคยเก็บ, ลบ หรือ อ่าน องค์ประกอบ . มันรักษาลำดับจากน้อยไปมากและไม่จัดเก็บซ้ำองค์ประกอบ.ได้ทันทีเพื่อใช้ SortedSetประเภทถ้าคุณได้เพื่อจัดเก็บ โดดเด่น ส่วนประกอบ และรักษาลำดับจากน้อยไปมากมันคือพบใน System.Collections.Generic namespace

ตัวอย่าง:

โดยใช้ System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {var names = new SortedSet () names.Add ('Sanjay') names.Add ('Anuradha') names.Add ( 'Praveen') ชื่อเพิ่ม ('ราวี') ชื่อเพิ่ม ('Kajol') foreach (ชื่อตัวแปรในชื่อ) {Console.WriteLine (ชื่อ)}}}

// เอาต์พุต:

อนุราธ
Kajol
ประวีณ
ราวี
ซานเจย์

ซ้อนกัน

ซ้อนกัน เป็นคอลเลกชันง่ายๆที่ตามมา ขอบ หรือก่อนอื่นในขั้นตอนสุดท้ายขณะประมวลผลองค์ประกอบที่เก็บไว้ในนั้น

ตัวอย่าง:

โดยใช้ System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {Stack names = new Stack () names.Push ('Chandan') names.Push ('Pooja') names.Push ( 'James') names.Push ('Rajesh') names.Push ('kumar') foreach (ชื่อสตริงในชื่อ) {Console.WriteLine (ชื่อ)} Console.WriteLine ('Peek element:' + names.Peek () ) Console.WriteLine ('Pop:' + names.Pop ()) Console.WriteLine ('After Pop, Peek element:' + names.Peek ())}}

// เอาต์พุต:

คูมาร์
Rajesh
เจมส์
พูจา
จันดาน
ดูองค์ประกอบ: kumar
ป๊อป: kumar
หลังจากป๊อปองค์ประกอบ Peek: Rajesh

คิว

คิวจะคล้ายกับ Stack โดยสิ้นเชิง แต่ข้อแตกต่างเพียงอย่างเดียวคือ Queue ตามมา FIFO หรือหลักการเข้าก่อนและออกก่อนในขณะที่ประมวลผลองค์ประกอบที่เก็บไว้ในนั้น

ตัวอย่าง:

โดยใช้ System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {Queue names = new Queue () names.Enqueue ('Srujan') names.Enqueue ('Prajat') names.Enqueue ( 'John') names.Enqueue ('Raju') names.Enqueue ('Hari') foreach (ชื่อสตริงในชื่อ) {Console.WriteLine (name)} Console.WriteLine ('Peek element:' + names.Peek () ) Console.WriteLine ('Dequeue:' + names.Dequeue ()) Console.WriteLine ('After Dequeue, Peek element:' + names.Peek ())}}

// เอาต์พุต:

ศรีจันทร์
ประจักษ์
จอห์น
ดุเดือด
วัน
ดูองค์ประกอบ: Srujan
Dequeue: Srujan
หลังจาก Dequeue, Peek element: Prajat

รายการที่เชื่อมโยง

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

ตัวอย่าง:

โดยใช้ System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {var names = new LinkedList () names.AddLast ('Rajat') names.AddLast ('Arun') names.AddLast ( 'Prakash') names.AddLast ('jay') names.AddFirst ('sai') foreach (var name in names) {Console.WriteLine (name)}}}

// เอาต์พุต:

สาย
ขอบเขต
อรุณ
ปรากาช
เจย์

พจนานุกรม

พจนานุกรม ประเภทใช้ไฟล์ความคิดของแฮชแท็ก มันเก็บค่าไว้หลักฐานของคีย์ ประกอบด้วยโดดเด่นคีย์แต่เพียงผู้เดียว. โดยความช่วยเหลือของสำคัญเราจะค้นหาหรือนำองค์ประกอบออกไป.มันคือพบใน System.Collections.Generic namespace

ตัวอย่าง:

โดยใช้ System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {Dictionary names = new Dictionary () names.Add ('1', 'Shiva') names.Add ('2', 'Prasad') ชื่อเพิ่ม ('3', 'Preetam') ชื่อเพิ่ม ('4', 'Roy') เพิ่ม ('5', 'Akash') foreach (KeyValuePair kv ในชื่อ) {Console. WriteLine (kv.Key + '' + kv.Value)}}}

// เอาต์พุต:

1 พระอิศวร
2 ปราสาท
3 พรีแทม
4 รอย
5Akash

พจนานุกรมเรียงลำดับ

เรียงลำดับ ประเภทใช้ไฟล์ออกแบบของแฮชแท็ก มันเก็บค่าไว้ความคิดของคีย์ ประกอบด้วยโดดเด่นคีย์และรักษาลำดับจากน้อยไปหามากบนความคิดของคีย์ โดยความช่วยเหลือของสำคัญเราจะค้นหาหรือนำองค์ประกอบออกไป.มันคือพบใน System.Collections.Generic namespace

ตัวอย่าง:

โดยใช้ System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ('1', 'Arun') names.Add ('4', ชื่อ 'Vishal') เพิ่ม ('5', 'Ramesh') ชื่อเพิ่ม ('3', 'Vidya') ชื่อเพิ่ม ('2', 'Pallavi') foreach (KeyValuePair kv ในชื่อ) {Console. WriteLine (kv.Key + '' + kv.Value)}}}

// เอาต์พุต:

1 พระอิศวร
2 ปราสาท
3 พรีแทม
4 รอย
5Akash

รายการที่จัดเรียง

วิธีแจ้งเตือนเป็น html

SortedList คืออาร์เรย์ของคู่คีย์ / ค่า มันเก็บค่าไว้หลักฐานของคีย์ SortedListประเภทประกอบด้วยโดดเด่นคีย์และรักษาลำดับจากน้อยไปหามากบนหลักฐานของคีย์ โดยความช่วยเหลือของสำคัญเราสามารถทำได้ง่ายๆค้นหาหรือลบองค์ประกอบ.มันคือพบใน System.Collections.Generic เนมสเปซ

ตัวอย่าง:

โดยใช้ System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ('1', 'Arun') names.Add ('4', ชื่อ 'Vishal') เพิ่ม ('5', 'Ramesh') ชื่อเพิ่ม ('3', 'Vidya') ชื่อเพิ่ม ('2', 'Pallavi') foreach (KeyValuePair kv ในชื่อ) {Console. WriteLine (kv.Key + '' + kv.Value)}}}

// เอาต์พุต:

1 อรุณ
2 ปัลลาวี
3 วิดยา
4 วิชาล
5ราเมช

โครงสร้าง

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

ตัวอย่าง:

การใช้ System struct Books {public string title public string author public string subject public int book_id} public class Edureka {public static void Main (string [] args) {Books Book1 Books Book2 Book1.title = 'C # Programming' Book1.author = ' Ramchandra Kumar 'Book1.subject =' สอนการเขียนโปรแกรม C ++ 'Book1.book_id = 95908978 Book2.title =' Telecom Billing 'Book2.author =' Karan 'Book2.subject =' Telecom Billing Tutorial 'Book2.book_id = 18674900 Console.WriteLine ( 'Book 1 title: {0}', Book1.title) Console.WriteLine ('Book 1 Author: {0}', Book1.author) Console.WriteLine ('Book 1 subject: {0}', Book1.subject) Console.WriteLine ('เล่ม 1 book_id: {0}', Book1.book_id) Console.WriteLine ('หนังสือ 2 ชื่อ: {0}', Book2.title) Console.WriteLine ('เล่ม 2 ผู้แต่ง: {0}', Book2.author) Console.WriteLine ('หนังสือ 2 เรื่อง: {0}', Book2.subject) Console.WriteLine ('Book 2 book_id: {0}', Book2.book_id) Console.ReadKey ()}}

// เอาต์พุต:

เล่ม 1 ชื่อ: C # Programming
เล่ม 1 ผู้แต่ง: Ramchandra Kumar
เล่ม 1 เรื่อง: สอนการเขียนโปรแกรม C ++
เล่ม 1 book_id: 95908978
หนังสือ 2 ชื่อ: Telecom Billing
เล่ม 2 ผู้แต่ง: Karan
เล่ม 2 เรื่อง: บทแนะนำการเรียกเก็บเงินโทรคมนาคม
เล่ม 2 book_id: 18674900

ฟังก์ชั่น

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

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

ไวยากรณ์

FunctionName () {// function body // return statement}

ตัวอย่าง:

โดยใช้ System namespace FunctionExample {class Edureka {public string Show (string message) {Console.WriteLine ('Inside Show Function') return message} static void Main (string [] args) {Edureka program = new Edureka () string message = program แสดง ('ถึง Edureka') Console.WriteLine ('ยินดีต้อนรับ' + ข้อความ)}}}

// เอาต์พุต:

ฟังก์ชัน Inside Show
ยินดีต้อนรับสู่ Edureka

ฟังก์ชั่นสามารถใช้งานได้ 3 วิธี:

  • โทรตามค่า
  • โทรตามข้อมูลอ้างอิง
  • ออกพารามิเตอร์

โทรตามค่า

ใน C # มูลค่า - ประเภท พารามิเตอร์คือที่ผ่านแบบจำลองของค่าดั้งเดิมเป็นแทนฟังก์ชันเอกสารอ้างอิง. มันไม่แก้ไขค่าแรก. อันสร้างการแก้ไขแล้วผ่านไปแล้วไม่มีค่าอายุค่าเฉพาะ.ภายในตัวอย่างต่อไปนี้เรามีผ่านมูลค่าตลอดที่โทร.

ตัวอย่าง:

การใช้ System namespace CallByValue {class Edureka {public void Show (int val) {val * = val Console.WriteLine ('The value inside the show function' + val)} static void Main (string [] args) {int val = 50 โปรแกรม Edureka = โปรแกรม Edureka () Console.WriteLine ('ค่าก่อนเรียกฟังก์ชัน' + val) โปรแกรมแสดง (val) Console.WriteLine ('ค่าหลังจากเรียกใช้ฟังก์ชัน' + val)}}}

// เอาต์พุต:

ค่าก่อนเรียกใช้ฟังก์ชัน 50
ค่าภายในฟังก์ชันการแสดง 2500
ค่าหลังจากเรียกใช้ฟังก์ชัน 50

โทรตามข้อมูลอ้างอิง

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

ตัวอย่าง:

การใช้ System namespace CallByReference {class Edureka {public void Show (ref int val) {val * = val Console.WriteLine ('The value inside the show function' + val)} static void Main (string [] args) {int val = 50 โปรแกรม Edureka = โปรแกรม Edureka () Console.WriteLine ('ค่าก่อนเรียกฟังก์ชัน' + val) โปรแกรมแสดง (ค่าอ้างอิง) Console.WriteLine ('ค่าหลังจากเรียกฟังก์ชัน' + val)}}}

// เอาต์พุต:

ค่าก่อนเรียกใช้ฟังก์ชัน 50
ค่าภายในฟังก์ชันการแสดง 2500
ค่าหลังจากเรียกใช้ฟังก์ชัน 2500

ออกพารามิเตอร์

พารามิเตอร์ออกให้ ออก คีย์เวิร์ดเพื่อส่งผ่านอาร์กิวเมนต์เป็นแบบไม่ใช้ มันเหมือนกับ Reference-type ยกเว้นว่าไม่ต้องการให้ตัวแปรเริ่มต้นก่อนที่จะส่งผ่าน เราต้องใช้ ออก คีย์เวิร์ดเพื่อส่งผ่านอาร์กิวเมนต์เป็นแบบไม่ใช้ จะมีประโยชน์เมื่อเราต้องการให้ฟังก์ชันคืนค่าหลายค่า

ตัวอย่าง:

ใช้เนมสเปซระบบ OutParameter {class Edureka {public void Show (out int val) {int square = 5 val = square val * = val} static void Main (string [] args) {int val = 50 Edureka program = new Edureka () Console.WriteLine ('ค่าก่อนส่งออกตัวแปร' + val) โปรแกรมแสดง (out val) Console.WriteLine ('ค่าหลังจากได้รับตัวแปรออก' + val)}}}

// เอาต์พุต:

ค่าก่อนส่งผ่านตัวแปร 50

มูลค่าหลังจากรับตัวแปร out 25

ตอนนี้ให้เราย้ายไปที่การเขียนโปรแกรมเชิงวัตถุ

การเขียนโปรแกรมเชิงวัตถุ

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

คุณสมบัติของการเขียนโปรแกรมเชิงวัตถุ:

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

กระบวนทัศน์เชิงวัตถุใน C # มีดังนี้

การแจงนับใน C #

Enum หรือเรียกอีกอย่างว่า การแจงนับ ใน C # ใช้เพื่อเก็บค่าคงที่โดยไม่ต้องแก้ไขในระหว่างการดำเนินการทั้งหมดของโปรแกรม C # มันใช้ในการจัดเก็บชุดค่าคงที่ที่ตั้งชื่อเช่นฤดูกาลวันเดือนขนาดเป็นต้น

ตัวอย่าง:

ใช้คลาสระบบสาธารณะ EnumExample {public enum week {จันทร์อังคารพุธพฤหัสบดีศุกร์เสาร์อาทิตย์} โมฆะคงที่สาธารณะ Main () {int x = (int) สัปดาห์จันทร์ int y = (int) สัปดาห์คอนโซลวันศุกร์ .WriteLine ('Monday = {0}', x) Console.WriteLine ('Friday = {0}', y)}}

// เอาต์พุต:

วันจันทร์ = 0
วันศุกร์ = 4

แนวทางการเขียนโปรแกรมเชิงวัตถุ

รูปแบบการเขียนโปรแกรมเชิงวัตถุสามารถทำได้โดยทำตามวิธีการที่กำหนดด้านล่าง

การห่อหุ้ม

การห่อหุ้ม เป็นวิธีการรวมไฟล์ วิธีการ พร้อมกับ สมาชิกข้อมูล

ตัวอย่าง:

การใช้ System namespace Edureka {class Rectangle {public double length public double width public double GetArea () {return length * width} public void Display () {Console.WriteLine ('Length: {0}', length) Console.WriteLine (' ความกว้าง: {0} ', width) Console.WriteLine (' Area: {0} ', GetArea ())}} class ExecuteRectangle {static void Main (string [] args) {Rectangle r = new Rectangle () r.length = 50 r.width = 35 r.Display () Console.ReadLine ()}}}

// เอาต์พุต:

ความยาว: 50
ความกว้าง: 35
พื้นที่: 1750

สิ่งที่เป็นนามธรรม

สิ่งที่เป็นนามธรรม เป็นวิธีการ ซ่อน ส่วนการเข้ารหัสที่ซับซ้อนจากผู้ใช้โดยให้ข้อมูลที่จำเป็นแก่เขาเท่านั้นที่เขาต้องการ

ตัวอย่าง:

using System public abstract class Shape {public abstract void draw ()} public class Rectangle: Shape {public override void draw () {Console.WriteLine ('drawing rectangle ... ')}} public class Circle: Shape {public override void draw () {Console.WriteLine ('drawing circle ... ')}} คลาสสาธารณะ TestAbstract {โมฆะแบบคงที่สาธารณะ Main () {Shape ss = new Rectangle () s.draw () s = new Circle () s.draw ()}}

// เอาต์พุต:

รูปสี่เหลี่ยม ...
วาดวงกลม ...

อินเตอร์เฟซ

อินเตอร์เฟซ คล้ายกับ Abstraction อย่างสิ้นเชิง ฟังก์ชันการทำงานของอินเทอร์เฟซคือการซ่อนข้อมูลที่ไม่สำคัญจากผู้ใช้และให้ข้อมูลสำคัญเพียงอย่างเดียวที่เขาต้องการ

ตัวอย่าง:

การใช้อินเทอร์เฟซสาธารณะของระบบ Drawable {void draw ()} คลาสสาธารณะ Rectangle: Drawable {public void draw () {Console.WriteLine ('drawing rectangle ... ')}} public class Circle: Drawable {public void draw () {Console .WriteLine ('drawing circle ... ')}} Public class TestInterface {public static void Main () {Drawable dd = new Rectangle () d.draw () d = new Circle () d.draw ()}}

// เอาต์พุต:

รูปสี่เหลี่ยม ...
วาดวงกลม ...

ความแตกต่าง

ความแตกต่างคือการรวมกันของ “ โพลี” + “ morphs” ซึ่งหมายถึงหลายรูปแบบ มันเป็นคำภาษากรีก หมายความว่าส่วนของรหัสสามารถมีได้หลายรูปแบบ เรามี Polymorphism สองประเภท

  • รวบรวมความแตกต่างของเวลา
  • ความแตกต่างของเวลาเรียกใช้

ตัวอย่าง:

การใช้ System public class Animal {public string color = 'white'} public class Dog: Animal {public string color = 'black'} public class TestSealed {public static void Main () {Animal d = new Dog () Console.WriteLine ( d.color)}}

// เอาต์พุต:

สีขาว

มรดก

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

ตัวอย่างการสืบทอดระดับเดียว

การใช้ System namespace RectangleApplication {class Rectangle {protected double length protected double width public Rectangle (double l, double w) {length = l width = w} public double GetArea () {return length * width} public void Display () {Console. WriteLine ('Length: {0}', length) Console.WriteLine ('Width: {0}', width) Console.WriteLine ('Area: {0}', GetArea ())}} class Tabletop: Rectangle {private ค่าใช้จ่ายสองเท่า Tabletop สาธารณะ (คู่ l, ดับเบิล w): ฐาน (l, w) {} GetCost สองเท่าสาธารณะ () {ต้นทุนต้นทุนสองเท่า = GetArea () * ค่าส่งคืน 70} โมฆะสาธารณะ Display () {base.Display () Console .WriteLine ('Cost: {0}', GetCost ())} class ExecuteRectangle {static void Main (string [] args) {Tabletop t = new Tabletop (4.5, 7.5) t.Display () Console.ReadLine () }}}

// เอาต์พุต:

ความยาว: 4.5
ความกว้าง: 7.5
พื้นที่: 33.75
ค่าใช้จ่าย: 2362.5

ตัวอย่างการสืบทอดหลายระดับ

การใช้ System namespace InheritanceApplication {class Shape {public void setWidth (int w) {width = w} public void setHeight (int h) {height = h} protected int width protected int height} อินเทอร์เฟซสาธารณะ PaintCost {int getCost (int area)} คลาส Rectangle: Shape, PaintCost {public int getArea () {return (width * height)} public int getCost (int area) {return area * 70}} class RectangleTester {static void Main (string [] args) {Rectangle Rect = ใหม่ Rectangle () พื้นที่ int Rect.setWidth (5) Rect.setHeight (7) area = Rect.getArea () Console.WriteLine ('Total area: {0}', Rect.getArea ()) Console.WriteLine ('Total ค่าทาสี: $ {0} ', Rect.getCost (area)) Console.ReadKey ()}}}

// เอาต์พุต:

พื้นที่ทั้งหมด: 35
ค่าทาสีทั้งหมด: 2450 เหรียญ

โอเวอร์โหลด

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

สมาชิกมากเกินไป

ตัวอย่าง:

การใช้ System public class Edureka {public static int add (int a, int b) {return a + b} public static int add (int a, int b, int c) {return a + b + c}} public class TestMemberOverloading { โมฆะคงที่สาธารณะ Main () {Console.WriteLine (Edureka.add (12, 23)) Console.WriteLine (Edureka.add (12, 23, 25))}}

// เอาต์พุต:

35
60

วิธีการโอเวอร์โหลด

ตัวอย่าง:

การใช้ System public class Edureka {public static int add (int a, int b) {return a + b} public static float add (float a, float b) {return a + b}} public class TestMemberOverloading {public static void Main ( ) {Console.WriteLine (Edureka.add (12, 23)) Console.WriteLine (Edureka.add (12.4f, 21.3f))}}

// เอาต์พุต:

35
33.699997

การลบล้าง

การลบล้างเป็นสถานการณ์ที่คลาสย่อยกำหนดวิธีการเดียวกันกับที่พาเรนต์กำหนดเช่นกัน ให้เราเข้าใจสิ่งนี้ผ่านตัวอย่างเล็ก ๆ

ตัวอย่าง:

การใช้คลาสระบบสาธารณะ Edureka {public virtual void eat () {Console.WriteLine ('Eating')}} public class Dog: Edureka {public override void eat () {Console.WriteLine ('Eating food')}} public class Overriding {โมฆะคงที่สาธารณะ Main () {Dog d = new Dog () d.eat ()}}

// เอาต์พุต:

กินอาหาร

เนมสเปซ

เนมสเปซ โดยทั่วไปจะใช้เพื่อจัดการกับหลายชั้นเรียนที่มีอยู่ในโปรแกรม เนมสเปซมีให้ใช้งานในรูปแบบต่างๆ

  • ระบบพื้นรองเท้า: ที่นี่ ระบบ กลายเป็นเนมสเปซ
  • ในการเข้าถึงคลาสของเนมสเปซเราจำเป็นต้องใช้ namespacename.classname
  • เราสามารถใช้ไฟล์ โดยใช้ คีย์เวิร์ดด้วย.

ตัวอย่าง:

ใช้ระบบโดยใช้ First โดยใช้เนมสเปซที่สองอันดับแรก {public class Edureka {public void sayWelcome () {Console.WriteLine ('Welcome To Edureka')}}} namespace Second {public class Happy_Learning {public void sayWishes () {Console.WriteLine (' Happy Learning ')}}} เนมสเปซสาธารณะ {public static void Main () {Edureka h1 = new Edureka () Happy_Learning w1 = new Happy_Learning () h1.sayWelcome () w1.sayWishes ()}}

// เอาต์พุต:

ยินดีต้อนรับสู่ Edureka
มีความสุขในการเรียนรู้

การทำงานของไฟล์

การทำงานของไฟล์ ที่มีอยู่ใน C # มีดังนี้:

การดำเนินการ คำอธิบาย
BinaryReader อ่านข้อมูลดั้งเดิมจากสตรีมไบนารี
BinaryWriter เขียนข้อมูลดั้งเดิมในรูปแบบไบนารี
บัฟเฟอร์สตรีม ที่เก็บข้อมูลชั่วคราวสำหรับสตรีมไบต์
ไดเรกทอรี ช่วยในการจัดการโครงสร้างไดเร็กทอรี
DirectoryInfo ใช้สำหรับการดำเนินการกับไดเร็กทอรี
DriveInfo ให้ข้อมูลสำหรับไดรฟ์
ไฟล์ ช่วยในการจัดการไฟล์
FileInfo ใช้สำหรับการดำเนินการกับไฟล์
FileStream ใช้เพื่ออ่านและเขียนไปยังตำแหน่งใด ๆ ในไฟล์
MemoryStream ใช้สำหรับการเข้าถึงโดยสุ่มไปยังข้อมูลสตรีมที่เก็บไว้ในหน่วยความจำ
เส้นทาง ดำเนินการกับข้อมูลเส้นทาง
StreamReader ใช้สำหรับอ่านอักขระจากสตรีมไบต์
StreamWriter ใช้สำหรับเขียนอักขระลงในสตรีม
StringReader ใช้สำหรับการอ่านจากสตริงบัฟเฟอร์
StringWriter ใช้สำหรับเขียนลงในบัฟเฟอร์สตริง

FileMode

FileMode เป็นตัวแจงนับซึ่งกำหนดวิธีการเปิดไฟล์หลายวิธี สมาชิกของ FileMode Enumerator อธิบายได้ดังนี้:

  • ผนวก: จะเปิดไฟล์ที่มีอยู่และวางเคอร์เซอร์ไว้ที่ท้ายไฟล์หรือสร้างไฟล์หากไม่มีไฟล์นั้น
  • สร้าง: ออกแบบมาเพื่อสร้างไฟล์ใหม่
  • สร้างใหม่: ได้รับการออกแบบมาเพื่อระบุไปยังระบบปฏิบัติการว่าควรสร้างไฟล์ใหม่
  • เปิด: ถูกออกแบบมาเพื่อเปิดไฟล์ที่มีอยู่
  • OpenOrCreate: ได้รับการออกแบบมาเพื่อระบุระบบปฏิบัติการว่าควรเปิดไฟล์หากมีอยู่มิฉะนั้นควรสร้างไฟล์ใหม่
  • ตัด: Truncate เปิดไฟล์ที่มีอยู่และตัดทอนขนาดให้เหลือศูนย์ไบต์

FileAccess

FileAccess Enumerator ใช้เพื่อเข้าถึงไฟล์ใดไฟล์หนึ่ง มีสมาชิกดังต่อไปนี้

  • อ่าน
  • เขียน
  • อ่านเขียน

FileShare

Fileshare Enumerator ใช้เพื่อแชร์ไฟล์เฉพาะ มีสมาชิกดังต่อไปนี้

  • สืบทอดได้: ที่สืบทอดได้อนุญาตให้ filehandle ส่งต่อการสืบทอดไปยังกระบวนการย่อย
  • ไม่มี: ไม่มีการปฏิเสธการแบ่งปันไฟล์ปัจจุบัน
  • อ่าน: Read อนุญาตให้เปิดไฟล์เพื่ออ่าน
  • อ่านเขียน: ReadWrite อนุญาตให้เปิดไฟล์เพื่ออ่านและเขียน
  • เขียน: Write อนุญาตให้เปิดไฟล์เพื่อเขียน

เหตุการณ์

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

สำนักพิมพ์

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

สมาชิก

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

ตัวอย่าง:

การใช้ System namespace Edureka {public delegate string Del (string str) class EventBlock {event Del NewEvent public EventBlock () {this.NewEvent + = new Del (this.WelcomeUser)} สตริงสาธารณะ WelcomeUser (ชื่อผู้ใช้สตริง) {return 'ยินดีต้อนรับสู่ Edureka . '+ username} Static void Main (string [] args) {EventBlock obj1 = new EventBlock () string result = obj1.NewEvent (' Happy Learning ') Console.WriteLine (result)}}}

// เอาต์พุต:

ยินดีต้อนรับสู่ Edureka มีความสุขในการเรียนรู้

Generics

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

Generics ในคลาส

การใช้ System namespace Edureka {class GenericClass {public GenericClass (T msg) {Console.WriteLine (msg)}} class Program {static void Main (string [] args) {GenericClass gen = new GenericClass ('ข้อความนี้มาจากคลาสทั่วไป' ) GenericClass genI = GenericClass ใหม่ (123) GenericClass getCh = GenericClass ใหม่ ('E')}}}

// เอาต์พุต:

ข้อความนี้มาจากคลาสทั่วไป
123
คือ

Generics ในวิธีการ

โดยใช้ System namespace Edureka {class GenericClass {public void Show (T msg) {Console.WriteLine (msg)}} class Program {static void Main (string [] args) {GenericClass genC = new GenericClass () genC.Show ('This ข้อความมาจากวิธีการทั่วไป ') genC.Show (321) genC.Show (' H ')}}}

// เอาต์พุต:

ข้อความนี้มาจากวิธีการทั่วไป
321

ผู้รับมอบสิทธิ์

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

ตัวอย่าง:

การใช้ System delegate int Calculator (int n) คลาสสาธารณะ Edureka {static int number = 25 public static int add (int n) {number = number + n return number} public static int mul (int n) {number = number * n return number} public static int getNumber () {return number} public static void Main (string [] args) {Calculator c1 = new Calculator (add) Calculator c2 = new Calculator (mul) c1 (20) Console.WriteLine ('หลังเครื่องคิดเลข หนึ่งผู้รับมอบสิทธิ์หมายเลขใหม่คือ: '+ getNumber ()) c2 (3) Console.WriteLine (' หลังจากคำนวณผู้รับมอบสิทธิ์สองหมายเลขใหม่คือ: '+ getNumber ())}}

// เอาต์พุต:

หลังจากคำนวณผู้รับมอบสิทธิ์หนึ่งหมายเลขใหม่คือ: 45
หลังจากคำนวณผู้รับมอบสิทธิ์สองคนหมายเลขใหม่คือ 135

การสะท้อนกลับ

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

  • ประเภท
  • MemberInfo
  • ConstructorInfo
  • MethodInfo
  • FieldInfo
  • PropertyInfo
  • TypeInfo
  • EventInfo
  • โมดูล
  • การชุมนุม
  • AssemblyName
  • ตัวชี้

พิมพ์คลาส

คลาสประเภท C # แสดงถึงการประกาศประเภทสำหรับประเภทคลาสประเภทอินเทอร์เฟซประเภทการแจงนับประเภทอาร์เรย์ประเภทค่า

พิมพ์ Properties

รายการคุณสมบัติที่สำคัญของคลาส Type จะกล่าวถึงด้านล่าง

ทรัพย์สิน คำอธิบาย
การชุมนุม รับ Assembly สำหรับประเภทนี้
AssemblyQualifiedName รับชื่อแอสเซมบลีที่มีคุณสมบัติเหมาะสมสำหรับชนิดนี้
คุณลักษณะ รับแอตทริบิวต์ที่เกี่ยวข้องกับประเภท
BaseType รับประเภทฐานหรือพาเรนต์
ชื่อเต็ม รับชื่อแบบเต็มของประเภท
IsAbstract ใช้เพื่อตรวจสอบว่าประเภทเป็นนามธรรมหรือไม่
IsArray ใช้เพื่อตรวจสอบว่าประเภทเป็น Array หรือไม่
IsClass ใช้เพื่อตรวจสอบว่าประเภทเป็น Class หรือไม่
IsEnum ใช้เพื่อตรวจสอบว่าเป็นประเภท Enum หรือไม่
IsInterface ใช้เพื่อตรวจสอบว่าเป็นประเภทอินเทอร์เฟซหรือไม่
IsNested ใช้เพื่อตรวจสอบว่าเป็นประเภทที่ซ้อนกันหรือไม่
IsPrimitive ใช้เพื่อตรวจสอบว่าเป็นประเภทดั้งเดิมหรือไม่
IsPointer ใช้เพื่อตรวจสอบว่าเป็นประเภทตัวชี้หรือไม่
IsNotPublic ใช้เพื่อตรวจสอบว่าประเภทนั้นไม่ใช่แบบสาธารณะหรือไม่
IsPublic ใช้เพื่อตรวจสอบว่าประเภทเป็นสาธารณะหรือไม่
IsSealed ใช้เพื่อตรวจสอบว่าเป็นประเภทปิดผนึกหรือไม่
IsSerializable ใช้เพื่อตรวจสอบว่าประเภทนั้นสามารถต่ออนุกรมได้หรือไม่
MemberType ใช้เพื่อตรวจสอบว่าประเภทนั้นเป็นประเภท Member หรือ Nested หรือไม่
โมดูล รับโมดูลประเภท
ชื่อ รับชื่อประเภท
เนมสเปซ รับเนมสเปซของประเภท
ทรัพย์สิน คำอธิบาย
GetConstructors () ส่งคืนตัวสร้างสาธารณะทั้งหมดสำหรับ Type
GetConstructors (BindingFlags) ส่งคืนตัวสร้างทั้งหมดสำหรับ Type ด้วย BindingFlags ที่ระบุ
GetFields () ส่งคืนฟิลด์สาธารณะทั้งหมดสำหรับ Type
GetFields (BindingFlags) ส่งคืนตัวสร้างสาธารณะทั้งหมดสำหรับ Type ที่มี BindingFlags ที่ระบุ
GetMembers () ส่งคืนสมาชิกสาธารณะทั้งหมดสำหรับ Type
GetMembers (BindingFlags) ส่งคืนสมาชิกทั้งหมดสำหรับ Type ที่มี BindingFlags ที่ระบุ
GetMethods () ส่งคืนเมธอดสาธารณะทั้งหมดสำหรับ Type
GetMethods (BindingFlags) ส่งกลับเมธอดทั้งหมดสำหรับ Type ที่มี BindingFlags ที่ระบุ
GetProperties () ส่งคืนคุณสมบัติสาธารณะทั้งหมดสำหรับ Type
GetProperties (BindingFlags) ส่งคืนคุณสมบัติทั้งหมดสำหรับ Type ที่มี BindingFlags ที่ระบุ
GetType () รับประเภทปัจจุบัน
GetType (สตริง) รับประเภทสำหรับชื่อที่กำหนด

ตัวอย่างการสะท้อน:

รับประเภท

ตัวอย่าง:

โดยใช้คลาสระบบสาธารณะ GetType {public static void Main () {int a = 10 Type type = a.GetType () Console.WriteLine (type)}}

// เอาต์พุต:

System.Int32

รับ Assembly

ตัวอย่าง:

การใช้ System using System.Reflection public class GetAssembly {public static void Main () {Type t = typeof (System.String) Console.WriteLine (t.Assembly)}}

// เอาต์พุต:

System.Private.CoreLib เวอร์ชัน = 4.0.0.0 วัฒนธรรม = เป็นกลาง PublicKeyToken = 7cec85d7bea7798e

ข้อมูลประเภทการพิมพ์

ตัวอย่าง:

โดยใช้ System โดยใช้ System.Reflection คลาสสาธารณะ PrintType {public static void Main () {Type t = typeof (System.String) Console.WriteLine (t.FullName) Console.WriteLine (t.BaseType) Console.WriteLine (t.IsClass) Console.WriteLine (t.IsEnum) Console.WriteLine (t.IsInterface)}}

// เอาต์พุต:

จริง
เท็จ
เท็จ

ตัวสร้างการพิมพ์

ตัวอย่าง:

โดยใช้ System using System.Reflection public class PrintConstructors {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('Constructor of {0} type ... ', t) ConstructorInfo [] ci = t .GetConstructors (BindingFlags.Public | BindingFlags.Instance) foreach (ConstructorInfo c ใน ci) {Console.WriteLine (c)}}}

// เอาต์พุต:

ผู้สร้าง System.String ประเภท ...
โมฆะ .ctor (ถ่าน [])
โมฆะ .ctor (Char [], Int32, Int32)
โมฆะ .ctor (ถ่าน *)
โมฆะ .ctor (Char *, Int32, Int32)
โมฆะ .ctor (SByte *)
โมฆะ .ctor (SByte *, Int32, Int32)
โมฆะ .ctor (SByte *, Int32, Int32, System.Text.Encoding)
โมฆะ .ctor (Char, Int32)
โมฆะ .ctor (System.ReadOnlySpan`1 [System.Char])

วิธีการพิมพ์

ตัวอย่าง:

โดยใช้ System using System.Reflection public class PrintMethods {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('Methods of {0} type ... ', t) MethodInfo [] ci = t .GetMethods (BindingFlags.Public | BindingFlags.Instance) foreach (MethodInfo m ใน ci) {Console.WriteLine (m)}}}

// เอาต์พุต:

วิธีการของ System.String ประเภท ...
System.String แทนที่ (System.String, System.String)
System.String [] แยก (Char, System.StringSplitOptions)
System.String [] แยก (Char, Int32, System.StringSplitOptions)
System.String [] แยก (Char [])
System.String [] แยก (Char [], Int32)
System.String [] แยก (Char [], System.StringSplitOptions)
System.String [] แยก (Char [], Int32, System.StringSplitOptions)
System.String [] แยก (System.String, System.StringSplitOptions)
System.String [] แยก (System.String, Int32, System.StringSplitOptions)
System.String [] แยก (System.String [], System.StringSplitOptions)
System.String [] แยก (System.String [], Int32, System.StringSplitOptions) ......

พิมพ์ฟิลด์

ตัวอย่าง:

โดยใช้ System using System.Reflection public class PrintFields {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('Fields of {0} type ... ', t) FieldInfo [] ci = t .GetFields (BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic) foreach (FieldInfo f ใน ci) {Console.WriteLine (f)}}}

// เอาต์พุต:

ฟิลด์ของระบบประเภทสตริง ...
System.String ว่างเปล่า

ตอนนี้ให้เราไปยังแนวคิดการเขียนโปรแกรม C # ขั้นสูง

แนวคิด C # ขั้นสูง

ฟังก์ชันนิรนาม

มีการเรียกฟังก์ชันที่ไม่มีชื่อเฉพาะ ไม่ระบุชื่อ ฟังก์ชั่น. มีฟังก์ชัน Anonymous สองประเภทที่มีอยู่ใน C #

  • แลมบ์ดานิพจน์
  • วิธีการที่ไม่ระบุตัวตน

ตัวอย่าง:

โดยใช้ System namespace LambdaExpressions {class Edureka {delegate int Square (int num) static void Main (string [] args) {Square GetSquare = x => x * x int j = GetSquare (25) Console.WriteLine ('Square:' + ญ)}}}

// เอาต์พุต:

สี่เหลี่ยมจัตุรัส: 625

วิธีการที่ไม่ระบุตัวตน

วิธีการไม่ระบุชื่อ มีฟังก์ชันการทำงานเช่นเดียวกับไฟล์ แลมบ์ดาแสดงออก ยกเว้นว่าจะอนุญาตให้เราละเว้นรายการพารามิเตอร์

ตัวอย่าง:

การใช้ System namespace AnonymousMethods {class Program {public delegate void AnonymousFun () static void Main (string [] args) {AnonymousFun fun = delegate () {Console.WriteLine ('This is anonymous function')} fun ()}}}

// เอาต์พุต:

นี่คือฟังก์ชันที่ไม่ระบุตัวตน

มัลติเธรด

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

ระบบเธรดเนมสเปซ

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

  • เกลียว
  • Mutex
  • จับเวลา
  • ตรวจสอบ
  • สัญญาณ
  • ThreadLocal
  • ThreadPool
  • ระเหย

กระบวนการและเธรด

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

วงจรชีวิตของเธรด

แต่ละเธรดมีวงจรชีวิต วงจรชีวิตของเธรดถูกกำหนดไว้ในคลาส System.Threading.Thread ต่อไปนี้เป็นขั้นตอนในวงจรชีวิตของเธรดใด ๆ

  • ยังไม่เริ่ม
  • Runnable (พร้อมรัน)
  • วิ่ง
  • ไม่สามารถรันได้
  • ตาย

คลาส Thread มีคุณสมบัติและวิธีการดังต่อไปนี้

คุณสมบัติของเธรด

ทรัพย์สิน คำอธิบาย
CurrentThread ส่งคืนอินสแตนซ์ของเธรดที่กำลังรันอยู่
IsAlive ตรวจสอบว่าเธรดปัจจุบันยังมีชีวิตอยู่หรือไม่
IsBackground ในการรับ / ตั้งค่าของเธรดปัจจุบันอยู่ในพื้นหลังหรือไม่
ManagedThreadId ใช้เพื่อรับรหัสเฉพาะสำหรับเธรดที่จัดการในปัจจุบัน
ชื่อ ใช้เพื่อรับหรือตั้งชื่อของเธรดปัจจุบัน
ลำดับความสำคัญ ใช้เพื่อรับหรือตั้งค่าลำดับความสำคัญของเธรดปัจจุบัน
ThreadState ใช้เพื่อส่งคืนค่าที่แสดงสถานะเธรด

วิธีการด้าย

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

ตัวอย่างกระทู้หลัก

ใช้ระบบโดยใช้ System.Threading คลาสสาธารณะ Edureka {public static void Main (string [] args) {Thread t = Thread.CurrentThread t.Name = 'MainThread' Console.WriteLine (t.Name)}}

// เอาต์พุต:

หลัก

การจัดการข้อยกเว้น

ข้อยกเว้น เป็นข้อผิดพลาดที่เกิดจากโปรแกรมในรันไทม์ เราดำเนินการจัดการข้อยกเว้นเพื่อให้โปรแกรมของเราปราศจากข้อยกเว้น

ข้อยกเว้น คำอธิบาย
System.DivideByZeroException เกิดข้อผิดพลาดจากการหารตัวเลขด้วยศูนย์
System.NullReferenceException จัดการกับข้อผิดพลาดที่สร้างขึ้นโดยการอ้างอิงอ็อบเจ็กต์ null
System.InvalidCastException จัดการข้อผิดพลาดที่เกิดจากการพิมพ์ที่ไม่ถูกต้อง
System.IO.IOException จัดการข้อผิดพลาดอินพุต / เอาต์พุต
System.FieldAccessException เกิดข้อผิดพลาดจากการเข้าถึงส่วนตัว / ที่มีการป้องกันที่ไม่ถูกต้อง

ใน C # เราใช้ 4 คำหลักในการดำเนินการ การจัดการข้อยกเว้น:

  • ลอง
  • จับ
  • สุดท้ายและ
  • โยน
ตัวอย่าง:
โดยใช้คลาสระบบสาธารณะ EdurekExample {public static void Main (string [] args) {ลอง {int a = 10 int b = 0 int x = a / b} catch (Exception e) {Console.WriteLine (e)} Console.WriteLine ('ข้อความนี้มาจาก catch block')}}

// เอาต์พุต:

System.DivideByZeroException: พยายามหารด้วยศูนย์
ที่ ExExaEdurekample.Main (String [] args) ใน F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: บรรทัด 10
ข้อความนี้มาจาก catch block

ตัวอย่างข้อยกเว้นที่กำหนดเอง

การใช้คลาสระบบสาธารณะ InvalidAgeException: Exception {public InvalidAgeException (ข้อความสตริง): base (ข้อความ) {}} คลาสสาธารณะที่กำหนดเอง {static void validate (int age) {if (age<18) { throw new InvalidAgeException('Sorry, Age is expected to be greater than 18') } } public static void Main(string[] args) { try { validate(12) } catch (InvalidAgeException e) { Console.WriteLine(e) } Console.WriteLine('Catch block is being executed now.') } } 

// เอาต์พุต:

InvalidAgeException: ขออภัยคาดว่าอายุจะมากกว่า 18
ที่ Customized.validate (Int32 age) ใน F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: บรรทัดที่ 18
ที่ Customized.Main (String [] args) ใน F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: บรรทัด 23
Catch block กำลังดำเนินการในขณะนี้

สุดท้ายบล็อกตัวอย่าง

การใช้คลาสระบบสาธารณะ FinalExecption {public static void Main (string [] args) {ลอง {int a = 10 int b = 0 int x = a / b} catch (Exception e) {Console.WriteLine (e)} สุดท้าย {Console .WriteLine ('ในที่สุดก็ดำเนินการบล็อก')} Console.WriteLine ('Catch block isecute')}}

// เอาต์พุต:

System.DivideByZeroException: พยายามหารด้วยศูนย์
ที่ FinalExecption.Main (String [] args) ใน F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: บรรทัดที่ 10
ในที่สุดบล็อกก็ถูกดำเนินการ
ดำเนินการบล็อก Catch

ลายเซ็นข้อยกเว้นของระบบ

[SerializableAttribute] [ComVisibleAttribute (true)] คลาสสาธารณะ SystemException: Exception

ตัวสร้างข้อยกเว้นของระบบ

ผู้สร้าง คำอธิบาย
SystemException () ใช้เพื่อเริ่มต้นอินสแตนซ์ใหม่ของคลาส SystemException
SystemException

(SerializationInfo, StreamingContext)

ใช้เพื่อเริ่มต้นอินสแตนซ์ใหม่ของคลาส SystemException ด้วยข้อมูลที่เป็นอนุกรม
SystemException (สตริง) ใช้เพื่อเริ่มต้นอินสแตนซ์ใหม่ของคลาส SystemException พร้อมข้อความแสดงข้อผิดพลาดที่ระบุ
SystemException (สตริงข้อยกเว้น) ใช้เพื่อเริ่มต้นอินสแตนซ์ใหม่ของคลาส SystemException ด้วยข้อความแสดงข้อผิดพลาดที่ระบุและการอ้างอิงถึงข้อยกเว้นภายในที่เป็นสาเหตุของข้อยกเว้นนี้

คุณสมบัติข้อยกเว้นของระบบ

ทรัพย์สิน คำอธิบาย
ข้อมูล ใช้เพื่อรับชุดของคู่คีย์ / ค่าที่ให้ข้อมูลเพิ่มเติมที่ผู้ใช้กำหนดเองเกี่ยวกับข้อยกเว้น
HelpLink ใช้เพื่อรับหรือตั้งค่าลิงก์ไปยังไฟล์วิธีใช้ที่เกี่ยวข้องกับข้อยกเว้นนี้
ผลลัพธ์ ใช้เพื่อรับหรือตั้งค่า HRESULT ซึ่งเป็นค่าตัวเลขที่เข้ารหัสซึ่งกำหนดให้กับข้อยกเว้นเฉพาะ
InnerException ใช้เพื่อรับอินสแตนซ์ Exception ที่ทำให้เกิดข้อยกเว้นปัจจุบัน
ข้อความ ใช้เพื่อรับข้อความที่อธิบายถึงข้อยกเว้นปัจจุบัน
ที่มา ใช้เพื่อรับหรือตั้งชื่อแอปพลิเคชันที่ทำให้เกิดข้อผิดพลาด
StackTrace ใช้เพื่อรับการแสดงสตริงของเฟรมทันทีบน call stack
TargetSite ใช้เพื่อรับเมธอดที่พ่นข้อยกเว้นปัจจุบัน

วิธีการยกเว้นระบบ

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

(SerializationInfo, StreamingContext)

ใช้เพื่อรับข้อมูลวัตถุ
GetType () ใช้เพื่อรับชนิดรันไทม์ของอินสแตนซ์ปัจจุบัน
MemberwiseClone () ใช้เพื่อสร้างสำเนาตื้นของวัตถุปัจจุบัน
ToString () ใช้เพื่อสร้างและส่งคืนการแสดงสตริงของข้อยกเว้นปัจจุบัน

ตัวอย่างข้อยกเว้นของระบบ

โดยใช้ System namespace CSharpProgram {class SystemExceptionExample {static void Main (string [] args) {try {int [] arr = new int [5] arr [10] = 25} catch (SystemException e) {Console.WriteLine (e)} }}}

// เอาต์พุต:

System.IndexOutOfRangeException: ดัชนีอยู่นอกขอบเขตของอาร์เรย์
ที่ CSharpProgram.SystemExceptionExample.Main (String [] args) ใน F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: บรรทัดที่ 11

การซิงโครไนซ์

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

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

ตัวอย่างที่ไม่มีการซิงโครไนซ์

ใช้ระบบโดยใช้ System.Threading คลาส Edureka {โมฆะสาธารณะ PrintTable () {สำหรับ (int i = 1 i<= 10 i++) { Thread.Sleep(100) Console.WriteLine(i) } } } class Program { public static void Main(string[] args) { Edureka p = new Edureka() Thread t1 = new Thread(new ThreadStart(p.PrintTable)) Thread t2 = new Thread(new ThreadStart(p.PrintTable)) t1.Start() t2.Start() } } 

// เอาต์พุต:

หนึ่ง
หนึ่ง
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10

ตัวอย่างด้วยการซิงโครไนซ์

การใช้ระบบโดยใช้ System.Threading คลาส Edureka {โมฆะสาธารณะ PrintTable () {lock (this) {สำหรับ (int i = 1 i<= 10 i++) { Thread.Sleep(100) Console.WriteLine(i) } } } } class Program { public static void Main(string[] args) { Edureka p = new Edureka() Thread t1 = new Thread(new ThreadStart(p.PrintTable)) Thread t2 = new Thread(new ThreadStart(p.PrintTable)) t1.Start() t2.Start() } } 

// เอาต์พุต:

หนึ่ง
2
3
4
5
6
7
8
9
10
หนึ่ง
2
3
4
5
6
7
8
9
10

คุณสมบัติใหม่

Microsoft ได้เพิ่มคุณสมบัติล่าสุดมากมายให้กับภาษา C # บางส่วนมีการกล่าวถึงด้านล่าง

rmi ใน java คืออะไร

ค # 6.0

  • ใช้คำสั่งแบบคงที่
  • ตัวกรองข้อยกเว้น
  • รอในการจับ / บล็อกในที่สุด
  • ตัวเริ่มต้นคุณสมบัติอัตโนมัติ
  • ค่าดีฟอลต์สำหรับคุณสมบัติ getter-only
  • สมาชิกที่แสดงออก
  • ผู้แพร่กระจาย Null
  • การแก้ไขสตริง
  • ตัวดำเนินการ Nameof
  • ตัวเริ่มต้นพจนานุกรม
  • คอมไพเลอร์เป็นบริการ (Roslyn)

ค # 7.0

  • การจับคู่รูปแบบ
  • ทูเปิล
  • โครงสร้าง
  • ฟังก์ชั่นท้องถิ่น
  • ตัวคั่นหลัก
  • ตัวอักษรไบนารี
  • อ้างอิงผลตอบแทนและคนในพื้นที่
  • ตัวสร้างและตัวสร้างร่างการแสดงออก
  • ตัวรับและตัวตั้งรับที่แสดงออก
  • ออกตัวแปร
  • ประเภทผลตอบแทน async ทั่วไป

ค # 7.1

  • Async หลัก
  • นิพจน์เริ่มต้น

คำถามสัมภาษณ์ตาม C #

คำถามสัมภาษณ์ที่สำคัญเกี่ยวกับภาษาโปรแกรม C # สามารถพบได้ในการอัปเดตนี้ .

ด้วยเหตุนี้เราจึงมาถึงตอนท้ายของบทความ“ C # Tutorial” นี้ ฉันหวังว่าคุณจะเข้าใจถึงความสำคัญของโครงสร้างข้อมูลไวยากรณ์ฟังก์ชันการทำงานและการดำเนินการที่ดำเนินการโดยใช้พวกเขา ตอนนี้คุณเข้าใจพื้นฐานของการเขียนโปรแกรมใน C # แล้วบทช่วยสอน C #ตรวจสอบไฟล์ มีการฝึกอบรม โดย Edureka เกี่ยวกับเทคโนโลยีมากมายเช่น Java ฤดูใบไม้ผลิ และอีกมากมายยิ่งไปกว่านั้น บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ซึ่งมีเครือข่ายผู้เรียนที่พึงพอใจมากกว่า 250,000 คนกระจายอยู่ทั่วโลก คำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของบล็อก 'C # Tutorial' และเราจะติดต่อกลับโดยเร็วที่สุด