ทั้ง Any() และ All() เป็น Extension Methods ใน LINQ ใช้ตรวจสอบเงื่อนไข (Predicate) กับ Sequence แต่ให้ผลลัพธ์ต่างกัน: Method คืนค่า true เมื่อ คืนค่า false เมื่อ Short-circuit? Any(predicate) มี อย่างน้อย 1 Element ตรงเงื่อนไข ไม่มี
ทั้ง Any() และ All() เป็น Extension Methods ใน LINQ ใช้ตรวจสอบเงื่อนไข (Predicate) กับ Sequence แต่ให้ผลลัพธ์ต่างกัน: Method คืนค่า true เมื่อ คืนค่า false เมื่อ Short-circuit? Any(predicate) มี อย่างน้อย 1 Element ตรงเงื่อนไข ไม่มี
ใน C# มี 2 วิธีหลักสำหรับรอหลาย Task ให้เสร็จ: Method Behavior Return Type Blocking? Task.WaitAll() บล็อก Thread ปัจจุบันจนกว่าทุก Task จะเสร็จ void Yes (Synchronous Block) Task.WhenAll() คืน Task ที่เสร็
ใช้ Library Newtonsoft.Json (Json.NET) ซึ่งเป็น Standard สำหรับ JSON Serialization ใน .NET Namespace: Newtonsoft.Json Enum สำคัญ: Formatting มี 2 ค่า: Formatting.None: ไม่จัดรูปแบบ (Compact) - Default Formatting.Indented: จัดรูปแบบมี Indentation (อ่านง่าย) ตัวอย่าง: Serialize ด้วย Indented u
Single Responsibility Principle (SRP) คือหลักการที่ว่า A class should have only one reason to change (คลาสควรมีเหตุผลเพียงอย่างเดียวที่จะต้องเปลี่ยนแปลง) ความรับผิดชอบ (Responsibility) ในที่นี้หมายถึง เหตุผลที่ทำให้ต้องแก้ไขคลาส หากคลาสมีหลายเหตุผลที่ต้องเปลี่ยน แสดงว่ามีหลาย Responsibility ควรแยกอ
Open/Closed Principle (OCP) คือหลักการที่ว่า Software entities (classes, modules, functions) ควรเปิดให้ขยาย (Open for extension) แต่ปิดต่อการแก้ไข (Closed for modification) หมายความ: เมื่อต้องการเพิ่มฟังก์ชันใหม่ ควรเพิ่มโค้ดใหม่ (เช่น สร้างคลาสใหม่) แทนที่จะแก้ไขโค้ดเดิมที่ทำงานอยู่แล้ว ตัวอย่าง:
Setter Injection (Property Injection) คือการส่ง Dependency ผ่าน Property แบบ Public (get/set) แทนที่จะส่งผ่าน Constructor ตัวอย่างโค้ด Current Service: {_service.ServiceMethod()}); } } การใช้งาน var logic = new BusinessLogic(); logic.Service = new ClaimService(); // Set ผ่าน Property logic.Ex
Dependency Injection (DI) คือการแปลงออบเจกต์ที่มีการผูกมัดกัน (Coupled) ให้กลายเป็นอิสระต่อกัน (Decoupled) โดยการส่งออบเจกต์ที่ต้องการ (Dependency) เข้าไปจากภายนอก แทนที่จะสร้างเองภายในคลาส ประเภทของ Dependency Injection Constructor Injection Setter Injection (Property Injection) Interface-b
Reflection (การสะท้อน) คือกระบวนการตรวจสอบข้อมูลเมตา (Metadata) ของประเภท (Types), เมธอด, ฟิลด์ และสมาชิกอื่นๆ ในโค้ดในขณะรันไทม์ (Runtime) Namespace System.Reflection ให้คลาสต่างๆ เช่น Assembly, Type, MethodInfo, PropertyInfo, FieldInfo เป็นต้น เพื่อเข้าถึงข้อมูลเหล่านี้ ตัวอย่างโค้ด p.ParameterT
ใน LINQ มีการจอยน์ (Join) หลายแบบ ซึ่งแตกต่างกันในการจัดการข้อมูลที่ไม่ตรงกัน (Non-matching elements): INNER JOIN: นำเฉพาะข้อมูลที่ตรงกัน (Matching elements) เข้ามาในผลลัพธ์ LEFT OUTER JOIN: นำข้อมูลที่ตรงกันทั้งหมด รวมถึงข้อมูลที่ไม่ตรงจากฝั่งซ้าย (Left collection) เข้ามาในผลลัพธ์ ตัวอย่าง:
ในบทความนี้ เราจะทำความเข้าใจความแตกต่างระหว่างเมธอด Dispose() และ Finalize() ใน C# ซึ่งทั้งคู่ใช้สำหรับการจัดการทรัพยากรที่ไม่ได้รับการจัดการโดย Garbage Collector (Unmanaged Resources) แต่มีวิธีการทำงานและจุดประสงค์ที่ต่างกัน Dispose() เมธอดนี้ถูกกำหนดในอินเทอร์เฟซ IDisposable ต้องถูกเรียกใช้
เปรียบเทียบ Delegates และ Events ใน C#Delegateประกาศด้วย Keyword delegateเป็น Function Pointerเก็บ Reference ของ Methods หนึ่งหรือหลายตัวใน Runtimeเป็น Keyword อิสระ ไม่พึ่ง Eventsมีเมธอด Combine() และ Remove() จัดการ Invocation Listส่งเป็น Parameter ให้ Method ได้Operator = กำหนด Method เดี่ยว, +=
เปรียบเทียบคีย์เวิร์ด ref และ out ใน C#ref KeywordParameter ต้อง Initialize ก่อนส่งเข้า refไม่จำเป็นต้อง Initialize ก่อน Return ให้ Calling Methodข้อมูลไหลสองทิศทาง (Two-way)เหมาะเมื่อ Called Method ต้องเปลี่ยนค่า Parameter ที่ส่งเข้าout Keywordไม่ต้อง Initialize Parameter ก่อนส่งเข้า outต้อง Initia
บทความนี้เปรียบเทียบ Abstract Class และ Interface ใน Java และ C#Abstract Classมีทั้ง Declaration และ Definition (Implementation)ไม่รองรับ Multiple Inheritance โดยตรงมี Constructorอาจมี Static Membersรองรับ Access Modifiers หลายแบบ (public, private, protected)Performance ดี (รวดเร็ว)ใช้ Implement Cor
เปิด Browser แบบเต็มหน้าจอ (Full Screen/Maximized) ใน Selenium WebDriver C# ด้วยเมธอด Maximize ใช้กับ WebDriver ObjectSyntaxdriver.Manage().Window.Maximize();ตัวอย่างโค้ด driver.Quit(); } }ผลลัพธ์Browser Maximized (หน้าต่างเบราว์เซอร์ขยายเต็มหน้าจอ)
ย้าย Mouse Pointer ไปยังตำแหน่งหรือ Element ใน Selenium WebDriver (C#) ด้วย Class Actions สร้าง Object Actions แล้วใช้เมธอดต่างๆย้ายไป Element: ใช้ MoveToElement ส่ง Element Locator แล้ว Perform() หลังย้ายไป Element สามารถ Click() ได้ ย้ายไปตำแหน่งเฉพาะ: ใช้ MoveByOffset ส่ง Offset X, YSyntaxActions
สามารถรอจนกว่า Element จะปรากฏใน Selenium WebDriver ได้ด้วย Explicit Wait ใช้หลักเมื่อมีปัญหา Synchronization (Element ยังไม่พร้อมบนหน้า)ใช้ Class WebDriverWait และ ExpectedConditions สร้าง Object WebDriverWait เรียกเมธอดของ ExpectedConditionsWebDriver รอเป็นเวลาที่กำหนดจนเงื่อนไขเป็นจริง หากเวลาหมด
Class เป็น Type สำคัญที่สุดใน C# คล้าย Blueprint (แผนผัง) สำหรับ Objects ใน Problem Domain เป็น Template สร้าง Objects กำหนดโครงสร้างและพฤติกรรมที่ Object ทุกตัวจาก Class นี้จะแบ่งปัน อย่างง่าย: Class คือ Cookie Cutter, Objects คือ CookiesClass ให้ Encapsulation (การห่อหุ้ม) แนวคิดสำคัญใน OOP: รวม D
Type ทั้งหมดใน C# แบ่งได้ 2 ประเภทหลัก: Value Types และ Reference TypesValue TypesVariable ของ Value Type เก็บ Data โดยตรง แต่ละ Variable มี Copy ของ Data เอง ไม่สามารถแก้ไข Object ของ Variable อื่นได้Value Types ได้แก่:Numeric Types: int, float, double ฯลฯchar และ boolstructenumValue Type เก็บค่าจร
C# เป็นภาษา Object-Oriented, Type-Safe, General-Purpose เน้น Productivity ของนักพัฒนาผ่าน Expressiveness, Simplicity, Performance ทำงานบน Windows, Mac, LinuxType-SafetyC# เป็น Statically Typed Language ตรวจสอบ Type ตอน Compile ลด Error มากก่อน RunGarbage CollectionAutomatic Memory Management: GC ทำง
ใน C# เมธอดส่วนใหญ่มี Parameters กำหนดข้อมูลที่ต้องส่งเข้า เรียกเมธอดต้องส่ง Arguments เมธอดประกาศ Inputs เป็น Parameters เรียกโค้ดส่ง Argumentsตัวอย่าง: Console.WriteLine(greeting); Greet(Hello); // Hello คือ ArgumentDefault: Pass by Value (Copy ค่า) การเปลี่ยนแปลงในเมธอดไม่ส่งผลต่อตัวแปรต้นฉบับint