Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#
C#
  1. การทำงานของ Generics ใน C#

    Generics เพิ่มใน C# 2.0 เป็นแนวคิดสำคัญที่สุด ช่วยเขียนโค้ด Reusable, High-Performance, Type-Safe ตอน Compile-time ใช้ Type ในโค้ดโดยไม่ต้องรู้ Type ล่วงหน้าGenerics ใช้ทั่วไปใน .NET: Collections, Delegates, Async Code ไม่ต้องรู้ขนาด Collection ล่วงหน้า ใช้กับ Element Type ใดๆ รวมถึง Custom Types C#

  2. แนวคิดของ Delegate ใน C#

    ถ้ามาพื้นฐาน C Delegate คล้าย Function Pointer แต่ใน C# มีความสามารถมากกว่ามาก บทความนี้อธิบายแนวคิด Delegate และการใช้งานจริงDelegate ให้ระดับ Indirection (การอ้อม) บรรจุ Code ไว้ใน Object สามารถส่งผ่านและ Execute แบบ Type-Safe แทนที่จะ Execute ทันที Code ถูกบรรจุใน Object สามารถทำหลายอย่างกับ Obj

  3. การทำงานของ Interface ใน C#

    Interface กำหนด Contract (สัญญา) ที่ Class หรือ Struct ต้อง Implement สามารถประกอบด้วย Methods, Properties, Events, Indexers Interface คล้าย Class แต่ไม่มี Data เก็บไว้ เพียงระบุพฤติกรรมที่ Class ที่ Implement ต้องทำClass สามารถ Implement Interface ได้หลาย Interface ในการ Implement ต้องมี Public Mem

  4. ออเปอเรเตอร์สำหรับจัดการค่า Null ใน C#

    C# มีออเปอเรเตอร์ 3 ตัวสำหรับจัดการ Null:1. Null-Coalescing Operator (??)คืนค่าตัวแปรหากไม่ใช่ Null มิฉะนั้นคืนค่า Default ที่ระบุ แทน Ternary Operator:// เดิม string resultOne = value != null ? value : default_value; // ใหม่ string resultTwo = value ?? default_value;ตัวอย่างstring input = null; str

  5. ความแตกต่างระหว่างคีย์เวิร์ด const และ readonly ใน C#

    ใน C# ทั้ง const และ readonly ใช้สำหรับกำหนดค่าที่ไม่เปลี่ยนแปลง (Immutable) แต่มีความแตกต่างสำคัญconstconst ประกาศค่าคงที่ที่ทราบค่าตอน Compile-time และไม่เปลี่ยนแปลง ใน C# รองรับเฉพาะ Built-in Types (int, string, double ฯลฯ) User-defined Types (Class, Struct) ไม่สามารถเป็น const ได้ เมธอด Property

  6. การทำงานของ Array (อาร์เรย์) ใน C#

    อาร์เรย์ (Array) แทนจำนวนคงที่ขององค์ประกอบชนิดเดียวกัน จัดเก็บในหน่วยความจำติดกัน (Contiguous Memory) ให้การเข้าถึงได้อย่างมีประสิทธิภาพหากรู้ IndexSyntax การประกาศและเริ่มต้น:// สร้างอาร์เรย์สตริงขนาด 3 string[] languages = new string[3];กำหนดค่าให้แต่ละ Index:languages[0] = csharp; languages[1] =

  7. Namespace สำคัญใน C# ที่ควรทราบ พร้อมคำอธิบายสั้นๆ

    .NET มี Namespace จำนวนมาก รวมถึง Third-party Libraries แต่มีบาง Namespace ที่ใช้บ่อยและครอบคลุม 80% ของปัญหาการเขียนโปรแกรมทั่วไป นี่คือ 20 Namespace ที่สำคัญ:Systemประกอบด้วยประเภทพื้นฐานที่สุด: Class, Struct, Enum, Event, Interface ฯลฯ ที่ใช้บ่อยที่สุดSystem.Textคลาสสำหรับ Character Encoding (ASC

  8. วัตถุประสงค์ของคลาส StringBuilder ใน C#

    ใน C# สตริง (String) เป็น Immutable (ไม่สามารถเปลี่ยนแปลงได้) หมายความว่าหลังสร้างแล้วไม่สามารถแก้ไขได้ การแก้ไขใดๆ จะสร้างสตริงใหม่ที่มีการเปลี่ยนแปลง ทิ้งสตริงเดิมไว้string word = aaabbbccc; string newWord = word.Replace(b, d); Console.WriteLine(word); // aaabbbccc Console.WriteLine(newWord);

  9. Namespace System.Reflection ใน C#

    Namespace System.Reflection ใน C# มีประเภท (Types) ที่ให้ข้อมูลเกี่ยวกับ Assemblies, Modules, Members, Parameters และรายการอื่นๆ ในโค้ดโดยการตรวจสอบ Metadata คลาส Assembly ใน namespace นี้แทน Assembly ปกติเข้าถึงได้ผ่านคุณสมบัติ Assembly บน Typeเอกลักษณ์ของ Assembly ประกอบด้วย 4 ส่วน:Simple name (ชื

  10. การอธิบาย Dependency Injection ใน C#

    Dependency (การอาศัย) คือออบเจกต์ที่ออบเจกต์อื่นต้องพึ่งพา Dependency Injection (DI) หรือ Inversion of Control คือการจัดหาออบเจกต์ที่จำเป็นให้กับออบเจกต์แทนที่จะให้ออบเจกต์สร้างเอง เทคนิคนี้ทำให้การทดสอบ (Testing) ง่ายขึ้น เพราะสามารถ Mock dependencies ได้ตัวอย่าง: ถ้าคลาส A เรียกเมธอดของคลาส B ซึ่ง

  11. การตรวจสอบว่าเมทริกซ์เป็น Toeplitz Matrix หรือไม่ใน C#

    เมทริกซ์เป็น Toeplitz หากทุกเส้นทแยงมุมจากซ้ายบนไปขวาล่างมีองค์ประกอบเหมือนกันตัวอย่าง 1[[1,2,3,4], [5,1,2,3], [9,5,1,2]]ผลลัพธ์: trueเส้นทแยงมุมคือ: [9], [5, 5], [1, 1, 1], [2, 2, 2], [3, 3], [4] ทุกเส้นมีค่าเหมือนกันตัวอย่าง 2[[1,2], [2,2]]ผลลัพธ์: falseเส้นทแยงมุม [1, 2] มีค่าต่างกันโค้ดpublic cl

  12. การค้นหาในเมทริกซ์ที่เพิ่มขึ้นทั้งแถวและคอลัมน์ใน C#

    วิธีแก้ปัญหาแบบดั้งเดิมคือสแกนทุกองค์ประกอบ ใช้เวลา O(MN) เมทริกซ์สามารถมองเป็นอาร์เรย์ 1 มิติที่เรียงลำดับได้ หากต่อแถวทั้งหมดจากบนลงล่าง จะได้อาร์เรย์ 1 มิติที่เรียงลำดับ จึงสามารถใช้ Binary Search ได้ โค้ดด้านล่างพัฒนาฟังก์ชัน SearchRowwiseColumnWiseMatrix ใช้ Binary Search บนเมทริกซ์ 2 มิติตัวอย

  13. การค้นหาในเมทริกซ์ที่เพิ่มขึ้นตามแถว (Row-wise Sorted Matrix) ใน C#

    วิธีแก้ปัญหาแบบดั้งเดิมคือสแกนทุกองค์ประกอบในเมทริกซ์เพื่อค้นหาคีย์ที่กำหนด วิธี Linear Search ใช้เวลา O(MN) หากขนาดเมทริกซ์คือ MxNเมทริกซ์ต้องสแกนจากมุมขวาบน หากค่าที่ค้นหามากกว่าค่ามุมขวาบน ให้เพิ่มแถว (Row++) มิฉะนั้นลดคอลัมน์ (Col--) โค้ดด้านล่างพัฒนาฟังก์ชัน SearchRowwiseIncrementedMatrix ที่รั

  14. การหาสามจำนวน (Triplets) ที่ไม่ซ้ำกันและมีผลรวมเป็นศูนย์ใน C#

    วิธีง่าย: ลูปซ้อน 3 ชั้น ตรวจสอบผลรวม 3 ตัว วิธีดีกว่า: ใช้ HashSet เก็บค่า ค้นหาใน O(1) สำหรับแต่ละคู่ หาค่าตรงข้ามของผลรวม Time O(n²) Space O(n)โค้ดตัวอย่างใช้ Two Pointers หลังจัดเรียง เพื่อหา Triplets ที่ไม่ซ้ำกันและผลรวมเป็นศูนย์Time Complexity: O(N²)Space Complexity: O(N) สำหรับการจัดเรียงและเ

  15. การหาความห่างสั้นที่สุดถึงตัวอักษรในสตริงด้วย C#

    สร้างอาร์เรย์ leftDis และ rightDis leftDis เก็บระยะทางจากซ้าย rightDis เก็บระยะทางจากขวา เมื่อเจอตัวอักษรเป้าหมาย บันทึกตำแหน่ง สุดท้ายหาค่าต่ำสุด (Min) ของทั้งสองอาร์เรย์Time Complexity: O(N)Space Complexity: O(N)ตัวอย่างโค้ดpublic class Arrays { public int[] ShortestDistanceToCharacter(string

  16. การหาความห่างไกลที่สุดถึงตัวอักษรในสตริงด้วย C#

    สร้างอาร์เรย์ 2 ตัว leftDis และ rightDis leftDis เก็บค่าระยะทางจากซ้าย rightDis เก็บค่าระยะทางจากขวา เมื่อเจอตัวอักษรเป้าหมาย บันทึกตำแหน่ง ในขั้นสุดท้ายหาค่าสูงสุด (Max) ของทั้งสองอาร์เรย์Time Complexity: O(N)Space Complexity: O(N)ตัวอย่างโค้ดpublic class Arrays { public int[] LongestDistanceTo

  17. การหาสามจำนวน (Triplet) ที่ไม่ซ้ำกันและมีผลรวมใกล้ Target มากที่สุดใน C#

    ใช้ Two Pointers คล้าย Triplet Sum to Zero วนลูปทีละตัว บันทึกความต่างระหว่างผลรวมสามจำนวนกับเป้าหมาย เปรียบเทียบกับความต่างน้อยสุดจนได้ triplet ที่ผลรวมใกล้เป้าหมายที่สุดTime Complexity: จัดเรียง O(N log N) รวม O(N²)Space Complexity: O(N) สำหรับการจัดเรียงตัวอย่างโค้ดpublic class Arrays { publi

  18. การหาสี่จำนวน (Quadruplets) ที่ไม่ซ้ำกันและมีผลรวมเป็นศูนย์ใน C#

    วิธีง่ายคือสร้างลูปซ้อน 4 ชั้น ตรวจสอบผลรวม 4 ตัวว่เป็นศูนย์หรือไม่ Time Complexity O(n⁴) Space O(1) วิธีที่ดีกว่าใช้ HashSet เก็บค่า ค้นหาใน O(1) สำหรับแต่ละคู่ หาค่าตรงข้ามของผลรวมในเซต Time O(n³) Space O(n)โค้ดตัวอย่างใช้วิธี Two Pointers หลังจัดเรียงอาร์เรย์ เพื่อหา quadruplets ที่ไม่ซ้ำกัน (Uni

  19. การหาสี่จำนวน (Quadruplet) ที่มีผลรวมใกล้เคียง Target มากที่สุดใน C#

    ใช้รูปแบบ Two Pointers คล้ายกับปัญหา Quadruplet Sum to Zero วนลูปผ่านอาร์เรย์ทีละตัว บันทึกความต่างระหว่างผลรวมสี่จำนวนกับเป้าหมาย เปรียบเทียบกับความต่างน้อยสุดที่พบจนได้คำตอบTime Complexity: การจัดเรียง O(N log N) รวม O(N³)Space Complexity: O(N) สำหรับการจัดเรียงตัวอย่างโค้ดpublic class Arrays {

  20. การสร้างสามเหลี่ยมปาสกาล (Pascal's Triangle) ใน C#

    สามเหลี่ยมปาสกาล (Pascals Triangle) เป็นรูปแบบตัวเลขสามเหลี่ยม มีประโยชน์ในคณิตศาสตร์และสถิติ รวมถึงการคำนวณคอมบิเนชัน ตัวเลขแต่ละตัวในสามเหลี่ยมเท่ากับผลรวมของสองตัวเหนือมัน เช่น แถวที่ 4 คือผลรวมของ 3 และ 3 ในแถวก่อนหน้า ตัวแรกและตัวสุดท้ายของทุกแถวจะเป็น 1 เสมอTime Complexity: O(N²)Space Complexi

Total 2668 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:132/134  20-คอมพิวเตอร์/Page Goto:1 126 127 128 129 130 131 132 133 134