คำถามและคำตอบสัมภาษณ์ C# 50 อันดับแรก (2025)
คำถามและคำตอบในการสัมภาษณ์ C# สำหรับนักศึกษาใหม่และประสบการณ์ 2/3/5/10 ปี
ต่อไปนี้เป็นคำถามและคำตอบในการสัมภาษณ์ C# สำหรับผู้สมัครที่มีประสบการณ์ 5 หรือ 10 ปีเพื่อให้ได้งานในฝัน
1) C# คืออะไร?
C# เป็นภาษาเชิงวัตถุ ชนิดปลอดภัย และจัดการที่คอมไพล์โดยเฟรมเวิร์ก .Net เพื่อสร้าง Microsoft ภาษาระดับกลาง.
👉 ดาวน์โหลดไฟล์ PDF ฟรี: คำถามและคำตอบสัมภาษณ์สัมภาษณ์ C#
2) อธิบายประเภทของความคิดเห็นใน C# พร้อมตัวอย่าง
บรรทัดเดียว
ตัวอย่าง:
//This is a single line comment
ครั้งที่สอง หลายบรรทัด (/* */)
ตัวอย่าง:
/*This is a multiple line comment We are in line 2 Last line of comment*/
สาม. ความคิดเห็น XML (///)
ตัวอย่าง:
/// summary; /// Set error message for multilingual language. /// summary
3) สามารถดำเนินการ catch block หลายอันได้หรือไม่?
ไม่ได้ ไม่สามารถดำเนินการ catch block ที่เป็นประเภทเดียวกันหลายบล็อกได้ เมื่อดำเนินการโค้ด catch ที่เหมาะสมแล้ว การควบคุมจะถูกถ่ายโอนไปยังบล็อกสุดท้าย จากนั้นโค้ดที่ตามหลังบล็อกสุดท้ายจะถูกดำเนินการ
4) ความแตกต่างระหว่างสาธารณะ คงที่ และโมฆะคืออะไร?
ตัวแปรหรือวิธีการประกาศสาธารณะสามารถเข้าถึงได้ทุกที่ในแอปพลิเคชัน ตัวแปรหรือวิธีการประกาศแบบคงที่สามารถเข้าถึงได้ทั่วโลกโดยไม่ต้องสร้างอินสแตนซ์ของคลาส สมาชิกแบบคงที่โดยค่าเริ่มต้นไม่สามารถเข้าถึงได้ทั่วโลก ขึ้นอยู่กับประเภทของการเข้าถึงที่แก้ไขที่ใช้ คอมไพเลอร์จะจัดเก็บที่อยู่ของเมธอดเป็นจุดเริ่มต้น และใช้ข้อมูลนี้เพื่อเริ่มดำเนินการก่อนที่จะสร้างออบเจ็กต์ใดๆ และ Void เป็นตัวดัดแปลงประเภทที่ระบุว่าเมธอดหรือตัวแปรไม่ส่งคืนค่าใดๆ
คำถามสัมภาษณ์ C #
5) วัตถุคืออะไร?
วัตถุเป็นตัวอย่างของคลาสที่เราเข้าถึงวิธีการของคลาสนั้น คำหลัก "ใหม่" ใช้เพื่อสร้างวัตถุ คลาสที่สร้างวัตถุในหน่วยความจำจะมีข้อมูลเกี่ยวกับเมธอด ตัวแปร และลักษณะการทำงานของคลาสนั้น
6) กำหนดตัวสร้าง
Constructor คือฟังก์ชันสมาชิกในคลาสที่มีชื่อเดียวกับคลาส Constructor จะถูกเรียกใช้โดยอัตโนมัติทุกครั้งที่มีการสร้างคลาสอ็อบเจ็กต์ มันสร้างค่าของสมาชิกข้อมูลในขณะที่เริ่มต้นคลาส
7) Jagged Arrays คืออะไร?
อาร์เรย์ที่มีองค์ประกอบประเภทอาร์เรย์เรียกว่า jagged Array องค์ประกอบอาจมีขนาดและขนาดต่างกัน นอกจากนี้เรายังสามารถเรียก jagged Array ว่าเป็นอาร์เรย์ของอาร์เรย์ได้
8) อะไรคือความแตกต่างระหว่างพารามิเตอร์ ref และ out?
อาร์กิวเมนต์ที่ส่งผ่านการอ้างอิงจะต้องเริ่มต้นก่อนที่จะส่งผ่านไปยังวิธีการในขณะที่พารามิเตอร์ออกไม่จำเป็นต้องเริ่มต้นก่อนที่จะส่งผ่านไปยังวิธีการ
9) คำสั่ง 'using' ใน C# มีประโยชน์อย่างไร?
บล็อก 'การใช้' ถูกใช้เพื่อรับทรัพยากรและประมวลผล จากนั้นจะกำจัดโดยอัตโนมัติเมื่อการดำเนินการบล็อกเสร็จสมบูรณ์
10) การทำให้เป็นอนุกรมคืออะไร?
เมื่อเราต้องการขนส่งวัตถุผ่านเครือข่าย เราจะต้องแปลงวัตถุให้เป็นกระแสข้อมูลไบต์ กระบวนการแปลงวัตถุให้เป็นกระแสข้อมูลไบต์เรียกว่าการทำให้เป็นอนุกรม เพื่อให้วัตถุเป็นแบบอนุกรมได้ ควรใช้ ISerialize Interface การดีซีเรียลไลซ์เซชันเป็นกระบวนการย้อนกลับของการสร้างออบเจ็กต์จากกระแสข้อมูลไบต์
11) เราสามารถใช้คำสั่ง “this” ภายในวิธีการแบบคงที่ได้หรือไม่?
เราไม่สามารถใช้ 'This' ในวิธีการแบบคงที่ได้เนื่องจากเราสามารถใช้ได้เฉพาะตัวแปร/วิธีการแบบคงที่ในวิธีการแบบคงที่เท่านั้น
12) ค่าคงที่และอ่านอย่างเดียวแตกต่างกันอย่างไร?
ตัวแปรคงที่จะถูกประกาศและเริ่มต้น ณ เวลาคอมไพล์ ไม่สามารถเปลี่ยนแปลงค่าได้ในภายหลัง อ่านอย่างเดียวจะใช้เฉพาะเมื่อเราต้องการกำหนดค่า ณ รันไทม์
13) คลาสอินเทอร์เฟซคืออะไร? ให้ตัวอย่างหนึ่งของมัน
ส่วนต่อประสานเป็นคลาสนามธรรมซึ่งมีเพียงวิธีนามธรรมสาธารณะเท่านั้น และวิธีการมีเพียงการประกาศเท่านั้น ไม่ใช่คำจำกัดความ วิธีการเชิงนามธรรมเหล่านี้จะต้องนำไปใช้ในคลาสที่สืบทอดมา
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { interface Guru99Interface { void SetTutorial(int pID, string pName); String GetTutorial(); } class Guru99Tutorial : Guru99Interface { protected int TutorialID; protected string TutorialName; public void SetTutorial(int pID, string pName) { TutorialID = pID; TutorialName = pName; } public String GetTutorial() { return TutorialName; } static void Main(string[] args) { Guru99Tutorial pTutor = new Guru99Tutorial(); pTutor.SetTutorial(1,".Net by Guru99"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
14) ประเภทของค่าและประเภทการอ้างอิงคืออะไร?
ประเภทค่าจะเก็บค่าข้อมูลไว้ภายในพื้นที่หน่วยความจำของตัวเอง ตัวอย่าง
int a = 30;
ประเภทการอ้างอิงจะจัดเก็บที่อยู่ของออบเจ็กต์ที่เก็บค่าไว้ เป็นตัวชี้ไปยังตำแหน่งหน่วยความจำอื่น
string b = "Hello Guru99!!";
15) การควบคุมแบบกำหนดเองและการควบคุมผู้ใช้คืออะไร?
Custom Controls คือการควบคุมที่สร้างขึ้นเป็นโค้ดที่คอมไพล์แล้ว (Dlls) ซึ่งใช้งานง่ายกว่าและสามารถเพิ่มลงในกล่องเครื่องมือได้ นักพัฒนาสามารถลากและวางการควบคุมลงในแบบฟอร์มบนเว็บได้ สามารถเพิ่มแอตทริบิวต์ได้ในระหว่างการออกแบบ เราสามารถเพิ่มการควบคุมแบบกำหนดเองลงในแอปพลิเคชันหลายตัวได้อย่างง่ายดาย (หากใช้ Dlls ร่วมกัน) ดังนั้น หากเป็นแบบส่วนตัว เราสามารถคัดลอกไปยัง dll ในไดเร็กทอรี bin ของแอปพลิเคชันเว็บ จากนั้นเพิ่มการอ้างอิงและสามารถใช้งานได้
ตัวควบคุมของผู้ใช้นั้นคล้ายกับไฟล์ ASP มากและสร้างได้ง่าย ตัวควบคุมของผู้ใช้ไม่สามารถวางในกล่องเครื่องมือแล้วลากหรือวางจากกล่องเครื่องมือได้ ตัวควบคุมเหล่านี้มีการออกแบบและโค้ดอยู่เบื้องหลัง นามสกุลไฟล์สำหรับตัวควบคุมของผู้ใช้คือ ascx
16) คลาสที่ปิดผนึกใน C# คืออะไร?
เราสร้างคลาสที่ปิดผนึกเมื่อเราต้องการจำกัดคลาสที่จะสืบทอด ตัวดัดแปลงที่ปิดผนึกใช้เพื่อป้องกันการสืบทอดมาจากคลาส หากเราบังคับระบุคลาสที่ปิดผนึกเป็นคลาสพื้นฐาน ข้อผิดพลาดเวลาคอมไพล์จะเกิดขึ้น
17) วิธีการโอเวอร์โหลดคืออะไร?
วิธีการโอเวอร์โหลดคือการสร้างหลายวิธีด้วยชื่อเดียวกันพร้อมลายเซ็นเฉพาะในคลาสเดียวกัน เมื่อเราคอมไพล์ คอมไพลเลอร์จะใช้การแก้ปัญหาการโอเวอร์โหลดเพื่อกำหนดวิธีการเฉพาะที่จะเรียกใช้
18) Array และ Arraylist แตกต่างกันอย่างไร?
ในอาร์เรย์เราสามารถมีรายการประเภทเดียวกันได้เท่านั้น ขนาดของอาร์เรย์ได้รับการแก้ไขเมื่อเปรียบเทียบ รายการอาร์เรย์จะคล้ายกับอาร์เรย์ แต่ไม่มีขนาดคงที่
19) สามารถแทนที่วิธีเสมือนส่วนตัวได้หรือไม่?
ไม่ เพราะไม่สามารถเข้าถึงได้นอกชั้นเรียน
20) อธิบายตัวแก้ไขการเข้าถึง “ภายในที่ได้รับการป้องกัน”
ตัวแปร/วิธีการภายในที่ได้รับการป้องกันสามารถเข้าถึงได้ภายในแอสเซมบลีเดียวกันและยังสามารถเข้าถึงได้จากคลาสที่สืบทอดมาจากคลาสหลักนี้ด้วย
21) อะไรคือความแตกต่างระหว่างคลาส System.String และ System.Text.StringBuilder?
System.String นั้นไม่สามารถเปลี่ยนแปลงได้ เมื่อเราแก้ไขค่าของตัวแปรสตริง หน่วยความจำใหม่จะถูกจัดสรรให้กับค่าใหม่และหน่วยความจำที่จัดสรรไว้ก่อนหน้านี้จะถูกปล่อยออกไป System.StringBuilder ได้รับการออกแบบให้มีแนวคิดของสตริงที่เปลี่ยนแปลงได้ ซึ่งสามารถดำเนินการต่างๆ ได้โดยไม่ต้องจัดสรรตำแหน่งหน่วยความจำแยกต่างหากสำหรับสตริงที่แก้ไข
22) System.Array.CopyTo() และ System.Array.Clone() แตกต่างกันอย่างไร
การใช้ Clone()
วิธีการที่เราสร้างวัตถุอาร์เรย์ใหม่ที่มีองค์ประกอบทั้งหมดในอาร์เรย์เดิมและการใช้งาน CopyTo()
วิธี. องค์ประกอบทั้งหมดของอาร์เรย์ที่มีอยู่จะคัดลอกไปยังอาร์เรย์อื่นที่มีอยู่ ทั้งสองวิธีทำการคัดลอกแบบตื้น
23) เราจะเรียงลำดับองค์ประกอบของ Array จากมากไปน้อยได้อย่างไร?
การใช้ Sort()
วิธีการตามมาด้วย Reverse()
วิธี
24) เขียนไวยากรณ์ C# เพื่อตรวจจับข้อยกเว้น
เพื่อตรวจจับข้อยกเว้น เราใช้บล็อก try-catch catch block สามารถมีพารามิเตอร์ประเภท system.Exception
เช่น:
try { GetAllData(); } catch (Exception ex) { }
ในตัวอย่างข้างต้น เราสามารถละเว้นพารามิเตอร์จากคำสั่ง catch ได้
25) ความแตกต่างระหว่างอินเทอร์เฟซและคลาสนามธรรมคืออะไร?
อินเทอร์เฟซมีวิธีการทั้งหมดที่มีเพียงการประกาศ แต่ไม่มีคำจำกัดความ ในคลาสนามธรรม เราสามารถมีวิธีการที่เป็นรูปธรรมได้ ในคลาสอินเทอร์เฟซ วิธีการทั้งหมดเป็นแบบสาธารณะ คลาสนามธรรมอาจมีวิธีการส่วนตัว
26) วิธีการ Finalize() และ Dispose() แตกต่างกันอย่างไร?
Dispose()
ถูกเรียกเมื่อเราต้องการให้อ็อบเจ็กต์ปล่อยทรัพยากรที่ไม่มีการจัดการด้วย ในทางกลับกัน, Finalize()
ใช้เพื่อจุดประสงค์เดียวกัน แต่ไม่รับประกันการรวบรวมขยะของวัตถุ
27) การอ้างอิงแบบวงกลมคืออะไร?
การอ้างอิงแบบวงกลมคือสถานการณ์ที่ทรัพยากรตั้งแต่สองรายการขึ้นไปพึ่งพาซึ่งกันและกัน ทำให้เกิดเงื่อนไขการล็อก และทำให้ทรัพยากรใช้งานไม่ได้
28) ยาชื่อสามัญใน C#.NET คืออะไร?
Generics ถูกใช้เพื่อสร้างคลาสโค้ดที่นำมาใช้ซ้ำได้เพื่อลดความซ้ำซ้อนของโค้ด เพิ่มความปลอดภัยของประเภท และประสิทธิภาพการทำงาน เราสามารถสร้างคลาสของคอลเล็กชันได้โดยใช้ Generics หากต้องการสร้างคอลเล็กชันแบบทั่วไป ควรใช้เนมสเปซ System.Collections.Generic แทนคลาสเช่น ArrayList ในเนมสเปซ System.Collections Generics ส่งเสริมการใช้ประเภทที่มีพารามิเตอร์
29) object pool ใน .NET คืออะไร?
พูลวัตถุคือคอนเทนเนอร์ที่มีวัตถุพร้อมที่จะใช้งาน ติดตามวัตถุที่กำลังใช้งานอยู่ จำนวนวัตถุทั้งหมดในพูล ซึ่งจะช่วยลดค่าใช้จ่ายในการสร้างและสร้างออบเจ็กต์ใหม่
30) แสดงรายการข้อยกเว้นประเภทที่ใช้กันทั่วไปใน .net
ArgumentException, ArgumentNullException, ArgumentOutOfRangeException, ArithmeticException, DivideByZeroException, OverflowException, IndexOutOfRangeException, InvalidCastException, ไม่ถูกต้องOperationException, IOEndOfStreamException, NullReferenceException, OutOfMemoryException, StackOverflowException ฯลฯ
31) ข้อยกเว้นแบบกำหนดเองคืออะไร
บางครั้งมีข้อผิดพลาดบางอย่างที่ต้องได้รับการจัดการตามความต้องการของผู้ใช้ มีการใช้ข้อยกเว้นแบบกำหนดเองสำหรับรายการเหล่านั้น และใช้ข้อยกเว้นที่กำหนดไว้
32) ผู้แทนคืออะไร?
ผู้รับมอบสิทธิ์เหมือนกันคือตัวชี้ฟังก์ชัน C++แต่ข้อแตกต่างเพียงอย่างเดียวคือเป็นประเภทที่ปลอดภัย ไม่เหมือนพอยน์เตอร์ฟังก์ชัน จำเป็นต้องมีผู้รับมอบสิทธิ์เนื่องจากสามารถใช้เพื่อเขียนฟังก์ชันที่ปลอดภัยสำหรับประเภททั่วไปได้มากขึ้น
33) คุณจะสืบทอดคลาสไปยังคลาสอื่นใน C# ได้อย่างไร?
เครื่องหมายโคลอนใช้เป็นตัวดำเนินการสืบทอดใน C# เพียงใส่เครื่องหมายโคลอนแล้วตามด้วยชื่อคลาส
public class DerivedClass : BaseClass
34) คลาสพื้นฐานใน .net คืออะไร ซึ่งคลาสทั้งหมดได้มาจากอะไร
System.Object
35) อะไรคือความแตกต่างระหว่างการเอาชนะวิธีการและการโอเวอร์โหลดวิธีการ?
ในการแทนที่เมธอด เราเปลี่ยนคำจำกัดความของเมธอดในคลาสที่ได้รับซึ่งเปลี่ยนพฤติกรรมของเมธอด วิธีการโอเวอร์โหลดคือการสร้างวิธีการที่มีชื่อเดียวกันภายในคลาสเดียวกันซึ่งมีลายเซ็นต่างกัน
36) วิธีการต่างๆ ที่สามารถโอเวอร์โหลดได้มีอะไรบ้าง?
วิธีการสามารถโอเวอร์โหลดได้โดยใช้ประเภทข้อมูลที่แตกต่างกันสำหรับพารามิเตอร์ ลำดับของพารามิเตอร์ที่แตกต่างกัน และจำนวนพารามิเตอร์ที่แตกต่างกัน
37) เหตุใดคุณจึงไม่สามารถระบุตัวแก้ไขการเข้าถึงสำหรับวิธีการภายในอินเทอร์เฟซได้
ในอินเทอร์เฟซ เรามีวิธีการเสมือนที่ไม่มีคำจำกัดความของวิธีการ วิธีการทั้งหมดมีไว้เพื่อแทนที่ในคลาสที่ได้รับ นั่นเป็นเหตุผลที่พวกเขาทั้งหมดเปิดเผยต่อสาธารณะ
38) เราจะตั้งค่าคลาสให้สืบทอดได้อย่างไร แต่ป้องกันไม่ให้เมธอดถูกแทนที่?
ประกาศชั้นเรียนเป็นแบบสาธารณะและปิดผนึกวิธีการไว้เพื่อป้องกันไม่ให้ถูกแทนที่
39) จะเกิดอะไรขึ้นหากอินเทอร์เฟซที่สืบทอดมามีชื่อวิธีการขัดแย้งกัน?
การนำไปใช้ขึ้นอยู่กับคุณ เนื่องจากวิธีการนั้นอยู่ภายในคลาสของคุณเอง อาจมีปัญหาเกิดขึ้นได้เมื่อวิธีการจากอินเทอร์เฟซที่แตกต่างกันคาดหวังข้อมูลที่แตกต่างกัน แต่เท่าที่คอมไพเลอร์ใส่ใจ คุณก็โอเค
40) อะไรคือความแตกต่างระหว่างโครงสร้างและคลาส?
โครงสร้างเป็นตัวแปรประเภทค่า และคลาสเป็นประเภทอ้างอิง โครงสร้างที่จัดเก็บไว้ในสแต็กทำให้เกิดค่าใช้จ่ายเพิ่มเติมแต่สามารถเรียกค้นได้เร็วกว่า ไม่สามารถสืบทอดโครงสร้างได้
41) จะใช้ประเภท nullable ใน .Net ได้อย่างไร
ประเภทค่าอาจใช้ค่าปกติหรือค่าว่างก็ได้ ประเภทดังกล่าวเรียกว่าประเภทที่เป็นโมฆะ
Int? someID = null; If(someID.HasVAlue) { }
42) เราจะสร้างอาร์เรย์ด้วยค่าที่ไม่ใช่ค่าเริ่มต้นได้อย่างไร?
เราสามารถสร้างอาร์เรย์ด้วยค่าที่ไม่ใช่ค่าเริ่มต้นโดยใช้ Enumerable.Repeat
43) ความแตกต่างระหว่างตัวดำเนินการ “is” และ “as” ใน c# คืออะไร?
ตัวดำเนินการ “is” ใช้เพื่อตรวจสอบความเข้ากันได้ของอ็อบเจ็กต์กับประเภทที่กำหนด และส่งคืนผลลัพธ์เป็นค่าบูลีน
ตัวดำเนินการ “as” ใช้ในการแปลงวัตถุให้เป็นประเภทหรือคลาส
44) ผู้รับมอบสิทธิ์แบบหลายผู้รับคืออะไร?
ผู้รับมอบสิทธิ์ที่มีตัวจัดการหลายตัวถูกกำหนดให้เรียกว่าผู้รับมอบสิทธิ์แบบหลายผู้รับ ตัวจัดการแต่ละตัวถูกกำหนดให้กับวิธีการ
45) ตัวสร้างดัชนีใน C# .NET คืออะไร?
ตัวทำดัชนีเป็นที่รู้จักกันว่าฉลาด อาร์เรย์ใน C#- ช่วยให้อินสแตนซ์ของคลาสได้รับการจัดทำดัชนีในลักษณะเดียวกับอาร์เรย์
เช่น:
public int this[int index] // Indexer declaration
46) อะไรคือความแตกต่างระหว่าง "throw" และ "throw ex" ใน .NET?
คำสั่ง "Throw" จะรักษาสแต็กข้อผิดพลาดดั้งเดิม ในขณะที่ "throw ex" มีการติดตามสแต็กจากจุดโยน ขอแนะนำให้ใช้ "throw" เสมอ เนื่องจากจะให้ข้อมูลข้อผิดพลาดที่แม่นยำยิ่งขึ้น
47) คุณลักษณะ C# คืออะไรและมีความสำคัญอย่างไร
C# ช่วยให้นักพัฒนามีวิธีในการกำหนดแท็กที่ประกาศบนเอนทิตีบางอย่าง เช่น คลาส วิธีการ ฯลฯ เรียกว่าแอตทริบิวต์ ข้อมูลของแอตทริบิวต์สามารถดึงข้อมูลได้ที่รันไทม์โดยใช้ Reflection
48) จะใช้รูปแบบการออกแบบซิงเกิลตันใน C # ได้อย่างไร?
ในรูปแบบซิงเกิลตัน คลาสสามารถมีได้เพียงอินสแตนซ์เดียวและจัดให้มีจุดเข้าใช้งานทั่วโลก
เช่น:
Public sealed class Singleton { Private static readonly Singleton _instance = new Singleton(); }
49) อะไรคือความแตกต่างระหว่างไดเร็กคาสต์และ ctype?
DirectCast ใช้ในการแปลงประเภทของวัตถุที่ต้องการประเภทรันไทม์ให้เหมือนกับประเภทที่ระบุใน DirectCast
Ctype ใช้สำหรับการแปลงซึ่งมีการกำหนดการแปลงระหว่างนิพจน์และประเภท
50) รหัส C# ได้รับการจัดการหรือไม่มีการจัดการหรือไม่
C# ได้รับการจัดการโค้ดเนื่องจากรันไทม์ภาษาทั่วไปสามารถคอมไพล์โค้ด C# เป็นภาษาระดับกลางได้
51) แอปพลิเคชันคอนโซลคืออะไร?
แอปพลิเคชันคอนโซลคือแอปพลิเคชันที่สามารถเรียกใช้ในพร้อมท์คำสั่งได้ Windows- สำหรับอย่างใดอย่างหนึ่ง ผู้เริ่มต้นใช้งาน .Netการสร้างแอปพลิเคชันคอนโซลถือเป็นขั้นตอนแรกในการเริ่มต้น
52) ยกตัวอย่างการลบองค์ประกอบออกจากคิว
วิธีการ dequeue ใช้เพื่อลบองค์ประกอบออกจากคิว
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { static void Main(string[] args) { Queue qt = new Queue(); qt.Enqueue(1); qt.Enqueue(2); qt.Enqueue(3); foreach (Object obj in qt) { Console.WriteLine(obj); } Console.WriteLine(); Console.WriteLine(); Console.WriteLine("The number of elements in the Queue " + qt.Count); Console.WriteLine("Does the Queue contain " + qt.Contains(3)); Console.ReadKey(); } } }
คำถามสัมภาษณ์เหล่านี้จะช่วยในวีว่าของคุณ (วาจา)