บทความ Web .NET และ Programming

มีอะไรใหม่ใน .NET Core 2 และ C# 7 : Pattern Matching ด้วยคำสั่ง Switch
ในภาษา C# เวอร์ชัน 7.0 การตรวจสอบเพื่อการจับคู่รูปแบบ (Pattern Matching: PM) ด้วยคำสั่ง if และ switch ได้รับการพัฒนาให้ดียิ่งขึ้น ยืดหยุ่นกว่าเดิม เขียนโค้ดได้สะดวกขึ้น แต่เดิมการทำ PM ด้วยหลักวัตถุวิธีเราจะสร้างคลาสฐานเป็นแบบ “abstract” จากนั้นจะใช้กรรมวิธีสืบคุณสมบัติเป็นคลาสลูกหลาย ๆ แบบตามต้องการ ส่วนเก็บข้อมูลและโค้ดเพื่อจัดการข้อมูลจะถูกผนึกไว้เป็นหน่วยเดียวกัน ซึ่งเป็นการ “เชื่อมแน่น” (tight coupling) ในกรณีที่เราต้องการการ “เชื่อมหลวม” (loose coupling) เราจะแยก ส่วนเก็บข้อมูลและโค้ดเพื่อจัดการข้อมูลออกจากกัน จากนั้นทำ PM ด้วยคำสั่ง if และ switch ซึ่งหากมีรูปแบบจำนวนวนมาก โค้ดจะยืดยาวเยิ่นเย้อ

มีอะไรใหม่ใน .NET Core 2 และ C# 7 : App ไม่ค้างตอนอ่านไฟล์ใหญ่
.NET Core version ที่ออกใหม่ก็จะใช้งานกับภาษา C# version ใหม่สุดได้ .NET Core version ปัจจุบันคือversion 2.1 สนับสนุนภาษา C# version 7.1 ส่วนversionต่อไปคือ 3.0 จะสนับสนุนภาษา C# version 8.0 ในหัวข้อนี้เราจะมาดูตัวอย่างการเขียนโค้ด การทำงานกับซิปไฟล์ (zip file) ด้วยภาษา C# ใน.NET Core ว่าเหมือนหรือแตกต่างกับการเขียนภาษา C# ใน .NET Framework หรือไม่อย่างไร

มีอะไรใหม่ใน .NET Core 2 และ C# 7 : การทำงานกับซิปไฟล์ (zip file)
.NET Core version ที่ออกใหม่ก็จะใช้งานกับภาษา C# version ใหม่สุดได้ .NET Core version ปัจจุบันคือversion 2.1 สนับสนุนภาษา C# version 7.1 ส่วนversionต่อไปคือ 3.0 จะสนับสนุนภาษา C# version 8.0 ในหัวข้อนี้เราจะมาดูตัวอย่างการเขียนโค้ด การทำงานกับซิปไฟล์ (zip file) ด้วยภาษา C# ใน.NET Core ว่าเหมือนหรือแตกต่างกับการเขียนภาษา C# ใน .NET Framework หรือไม่อย่างไร

การใช้ Socket Class เพื่อส่งและรับข้อมูลกับ Server HTTP ใน .NET Core 2 และ C# 7
สำหรับบทความนี้จะกล่าวถึงคุณสมบัติที่ถูกปรับปรุงใหม่ของภาษาซีชาร์ป 7.0 และ .NET Core 2.0 ในประเด็นที่เกี่ยวข้องกับการสื่อสารข้อมูลในเครือข่าย

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

Backward Compatibility (การเข้ากันได้ย้อนหลัง) ของ API
บทความตอนนี้พูดถึง Backward Compatibility ของ API ซึ่งคนโค้ดควรรู้และระมัดระวังเมื่อใช้งาน Framework ที่ออก version ใหม่กับ source code เก่าหรือ binary ที่ Compile ไว้กับ version เก่า หรือเมื่อเขียน library ใช้งานเอง เช่น ปัญหา Reference Types ที่ไม่เกี่ยวข้อง parameter แบบ Reference Types กับแบบที่ค่าเป็น null ไม่ได้ parameter ทางเลือก (Optional parameters) และ ปัญหาเรื่องความเข้ากันได้ย้อนหลังในระดับ source code และ binary เมื่อมีการทำ method overload กับ Type ที่เป็น Generic

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

มีอะไรใหม่ใน .NET Core 2 และ C# 7 : Expression-Bodied Members (EBM)
สมาชิกแบบนิพจน์ฝังตัว (Expression-Bodied Members ย่อ EBM) ที่เริ่มใน C# 6.0 มาตอนนี้ใน C# 7.0 ได้ถูกเพิ่มเติมให้สนับสนุนสมาชิกแบบต่าง ๆ ได้มากขึ้นกว่าเดิม EBM เป็นคุณสมบัติที่ช่วยให้เราสามารถเขียนนิยามสมาชิกของclass ได้อย่างกระชับและอ่านเข้าใจได้ง่าย ใน C# 6.0 เราสามารถใช้ EBM ร่วมกับสมาชิกของ class 2 แบบ คือ method และ Property แบบอ่านได้อย่างเดียว ใน C# 7.0 เราสามารถใช้ EBM ได้กับสมาชิกของ class เพิ่มอีก 4 แบบได้แก่ Property constructor Finalizer และ Indexer

ข้อดีของภาษา C# เมื่อเทียบกับภาษาอื่น ๆ ตอนที่ 12
ในตอนที่ผ่านมาได้พูดถึงข้อดีของภาษาซีชาร์ปที่มีคุณสมบัติ Expression Trees หรือ “ต้นไม้นิพจน์” ซึ่งเป็นข้อดีในภาษาซีชาร์ปที่ไม่พบในภาษาอื่น ๆ หลายภาษาอย่างเช่นภาษาซี หรือในภาษาจาวาสคริปต์ที่มีต้นไม้นิพจน์แบบย่นย่อ ไม่ใช่ต้นไม้นิพจน์เต็มรูปแบบอย่างที่เรากำลังพูดถึงอยู่ในขณะนี้

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