การหารด้วยศูนย์ (Divide by Zero) ใน C# พฤติกรรมขึ้นอยู่กับ **ชนิดข้อมูล** ของตัวเลข Integer Types (int, long, byte, short, etc.) → Exception using System; class Demo { static void Main() { int a = 10; int b = 0; try { int result = a / b
การหารด้วยศูนย์ (Divide by Zero) ใน C# พฤติกรรมขึ้นอยู่กับ **ชนิดข้อมูล** ของตัวเลข Integer Types (int, long, byte, short, etc.) → Exception using System; class Demo { static void Main() { int a = 10; int b = 0; try { int result = a / b
Class vs Object ใน C# ความสัมพันธ์พื้นฐานของ OOP: **Class = แม่แบบ (Blueprint), Object = อินสแตนซ์/วัตถุจริง (Instance)** Class (คลาส) - แม่แบบ นิยามโครงสร้าง: Fields (ข้อมูล), Properties, Methods (พฤติกรรม), Events ไม่ใช้หน่วยความจำสำหรับข้อมูล (แค่ metadata) เป็น Reference Type สร้างได้ไม่จำกัดจ
const vs readonly ใน C# ทั้งคู่ใช้สำหรับค่าที่ **ไม่เปลี่ยนแปลง** (immutable) หลังจากกำหนด แต่มีขอบเขตและเวลาที่กำหนดค่าแตกต่างกัน const (Constant) - ค่าคงที่ในเวลาคอมไพล์ ต้องกำหนดค่า **ตอนประกาศ** (compile-time constant) เป็น static โดยอัตโนมัติ (ไม่ต้องเขียน static) ค่าต้องเป็น compile-time con
Declaration vs Initialization vs Assignment ใน C# สามขั้นตอนนี้สับสนง่าย แต่มีความหมายเฉพาะเจาะจงใน C# 1. Declaration (การประกาศ) บอกคอมไพเลอร์ว่ามีตัวแปรชื่อนี้ ชนิดนี้ **จองพื้นที่หน่วยความจำ** แต่ **ยังไม่มีค่า** (ยกเว้น field ของ class ที่มี default value) // ตัวแปร local - ต้อง initialize ก่
ความแตกต่างระหว่าง Console.Read() และ Console.ReadLine() ใน C# ทั้งสองเป็นเมธอดของ Console สำหรับอ่านอินพุต แต่ทำงานต่างกันจริง Console.Read() อ่าน **ตัวอักษรเดียว** (single character) จาก input stream คืนค่า int (ASCII/Unicode code point) ไม่ใช่ char คืนค่า -1 หากถึง End of Stream (Ctrl+Z / Ctrl+
Overriding vs Hiding (Shadowing) ใน C# ทั้งสองเกี่ยวกับการนิยามเมธอดใน Derived Class ที่มีชื่อเหมือน Base Class แต่วัตถุประสงค์และพฤติกรรมต่างกัน Overriding (การเขียนทับ) - ใช้ virtual/override Base class ต้องระบุ virtual (หรือ abstract) Derived class ใช้ override **Polymorphism ทำงาน**: เรียกผ่าน
การส่งพารามิเตอร์ใน C#: Pass by Value vs Pass by Reference C# รองรับการส่งพารามิเตอร์ 2 แบบหลัก ส่งผลต่อการที่เมธอดจะแก้ไขค่าตัวแปรต้นฉบับได้หรือไม่ 1. Pass by Value (ส่งค่า) - ค่าเริ่มต้น สร้าง **สำเนา** ของค่า (copy) ให้เมธอด เมธอดทำงานบนสำเนา **ไม่ส่งผลต่อตัวแปรต้นฉบับ ใช้กับ Value Types (struc
ความแตกต่างระหว่าง TrimStart() และ TrimEnd() ใน C# ทั้งสองเป็นเมธอดของ string ใช้ลบอักขระที่ไม่ต้องการ แต่ตำแหน่งที่ลบต่างกัน TrimStart() - ลบหน้าสตริง (Leading) ลบอักขระนำหน้า (leading characters) ที่ระบุในอาร์เรย์ using System; class Program { static void Main() { // ลบศูนย์นำห
เมธอด Thread.Abort() ใน C# Thread.Abort() ใช้ยกเลิกเธรดโดยบังคับ โดยการโยน ThreadAbortException ในเธรดเป้าหมาย แต่เป็น Legacy API ที่ Deprecated แล้วใน .NET Core/.NET 5+ ตัวอย่างการใช้งาน (Legacy) using System; using System.Threading; namespace MultithreadingApplication { class ThreadCreation
การใช้ Pointer ใน C# (Unsafe Code) Pointer เป็นตัวแปรที่เก็บที่อยู่หน่วยความจำของตัวแปรอีกตัวหนึ่ง C# รองรับ pointer ในบริบท unsafe เท่านั้น ต้อง compile ด้วย flag /unsafe ตัวอย่าง: ดึงค่าผ่าน Pointer using System; namespace UnsafeCodeApplication { class Program { public static vo
เมธอด String.Join() ใน C# String.Join() ใช้รวมองค์ประกอบในอาร์เรย์หรือคอลเลกชันสตริงเข้าด้วยกัน โดยใส่ตัวคั่น (separator) ระหว่างแต่ละองค์ประกอบ อยู่ใน namespace System Syntax // พื้นฐาน public static string Join(string separator, string[] values); // Generic (รองรับ IEnumerable) public static st
ดาวเทียมวงโคจรโลกกลาง (Medium Earth Orbit - MEO) ดาวเทียม MEO วางอยู่ระหว่างสายพานแวนอัลเลน (Van Allen Belts) สองชั้น เรียกอีกอย่างว่า Intermediate Circular Orbits (ICOs) คุณสมบัติทางกายภาพ พารามิเตอร์ช่วงค่า ความสูง (Altitude)2,000 - 35,000 กิโลเมตร ตำแหน่งเหนือ LEO (Low Earth Orbit) และต่ำกว่
การเรียงลำดับ Dictionary ตาม Key ใน C# สำคัญ: C# ไม่มี HashMap (เป็นของ Java) คลาสที่เทียบเท่าคือ Dictionary<TKey, TValue> ซึ่ง ไม่รับประกันลำดับ หากต้องการเรียงลำดับต้องแปลงเป็น List หรือใช้ SortedDictionary วิธีที่ 1: เรียง Key แล้ววนลูป (Simple) using System; using System.Collections.Gene
Chained Exceptions (ข้อยกเว้นแบบโซ่) ใน C# Chained Exceptions คือการจับข้อยกเว้น (catch) แล้วโยนข้อยกเว้นใหม่พร้อมเก็บข้อยกเว้นเดิมไว้ใน property InnerException ช่วยให้ติดตามสาเหตุรากฐาน (root cause) ได้ครบถ้วน โครงสร้าง InnerException public class Exception { public Exception InnerException {
การใช้ Delegate เรียกใช้การดำเนินการทางคณิตศาสตร์ใน C# Delegate เป็นชนิดข้อมูลที่อ้างอิงถึงเมธอด (type-safe function pointer) ช่วยให้ส่งเมธอดเป็นพารามิเตอร์ เก็บในตัวแปร หรือเรียกใช้แบบไดนามิกได้ ตัวอย่าง: ใช้ Delegate กับการหาร using System; public class Demo { // เมธอดสำหรับหาร 5 public
Managed Code (โค้ดที่ถูกจัดการ) ใน C# Managed Code คือโค้ดที่การทำงานถูกจัดการโดย Common Language Runtime (CLR) ของ .NET Framework/.NET Core/.NET 5+ แทนที่จะรันบนระบบปฏิบัติการโดยตรง ลักษณะสำคัญของ Managed Code คุณสมบัติคำอธิบาย Memory ManagementGarbage Collector (GC) จัดการหน่วยความจำอัตโนมัติ
กฎเลขยกกำลัง: การหารฐานเดียวกัน กฎคณิตศาสตร์: a^m ÷ a^n = a^(m-n) — หารเลขยกกำลังฐานเดียวกัน = ฐานเดิม ยกกำลังเท่ากับผลต่างของเลขชี้กำลัง ตัวอย่างโค้ด using System; class Demo { static void Main() { double n = 10; // ฐาน double e1 = 10; // เลขชี้กำลังตัวเศษ d
การนำองค์ประกอบแรกออกจาก List (Pop Front) ใน C# C# List<T> ไม่มีเมธอด Pop() หรือ Dequeue() ตรงๆ แต่สามารถใช้ RemoveAt(0) เพื่อลบและดึงองค์ประกอบแรกได้ (แนวคิดคล้าย Pop Front) ตัวอย่างโค้ด using System; using System.Collections.Generic; class Program { static void Main() { Lis
กฎเลขยกกำลัง: การคูณฐานเดียวกัน กฎคณิตศาสตร์: a^m × a^n = a^(m+n) — คูณเลขยกกำลังฐานเดียวกัน = ฐานเดิม ยกกำลังเท่ากับผลรวมของเลขชี้กำลัง ตัวอย่างโค้ด using System; class Demo { static void Main() { double n = 2; // ฐาน double e1 = 5; // เลขชี้กำลังตัวแรก do
Checked และ Unchecked Context ใน C# C# อนุญาตให้ควบคุมการตรวจสอบล้น (overflow checking) สำหรับการดำเนินการคณิตศาสตร์จำนวนเต็ม (integral-type) ได้ 2 แบบ Checked Context (ตรวจสอบล้น) โยน OverflowException เมื่อผลลัพธ์เกินขอบเขตของชนิดข้อมูล เปิดใช้ได้ 3 ทาง: compiler option, คอนฟิก environment, keyw