จริงๆเรียกว่าลองมาทวนๆ JavaScript แล้วมีงงๆกับ Array Spread นิดหน่อย เลยลองดูจาก Doc จาก Spread syntax (...) - JavaScript | MDN (mozilla.org) สรุปแตก Element ข้างในออกมาให้ตัวย่อยสุด
- Array String แตกออกมาเป็น String
- Array int แตกออกมาเป็น int
- Array ผสมกัน แตกออกมาเป็น แต่ละตัวตาม Type
ตัวอย่างของ Javascript ก็ตาม ด้านล่างนี้เลย
//String const testStrArr = "Hello World" console.log(...testStrArr); //int const testNumberArr = [1, 2, 3]; console.log(...testNumberArr); //Mix const testMixArr = [1, "two", 3]; console.log(...testMixArr);
ดูมีประโยชน์ดี แล้ว C# มันมีไหม คำตอบเพิ่งมีตอนปีที่แล้วใน C#12 ครับ Pattern คล้ายกับของ JS เลย ใช้ตัว
.. variable_name
ตัวอย่างตามนี้เลย
using System;
public class Program
{
public static void Main()
{
int[] row0 = [1, 2, 3];
int[] row1 = [4, 5, 6];
int[] row2 = [7, 8, 9];
int[] single = [.. row0, .. row1, .. row2, 15, 20];
foreach (var element in single)
{
Console.Write($"{element}, ");
}
}
}
var numbers = new double[] {1.5, 2.0, 3.0}; // Double usually doesn't have precision issues with small whole numbers
Console.WriteLine(Sum(numbers));แล้วถ้ามาลองตัวอย่างที่ตัวอย่างใน Spread syntax (...) - JavaScript | MDN (mozilla.org)
- JavaScript
console.log("==========================================");
function sum(x, y, z) {
return x + y + z;
}
console.log(sum(...testNumberArr));
// Expected output: 6
console.log(sum.apply(null, testNumberArr));
// Expected output: 6- C# ตอนนี้ยังทำไม่ได้นะ มันจะขึ้น Error แทน ดังรูปเลย

สรุป Spread Operator ของ C# ยังไม่เท่ากับของตัว JavaScript นะ
- JavaScript - แตก Element ออกมา
- C# แยก Index ออกมา
Bonus
แล้วถ้าก่อนหน้า C#12 ทำยังไง กำหนด Data Type ให้รับ Array ครับ แล้วให้ Trick .Sum เอา
public int Sum(params int[] values)
{
return values.Sum();
}
var numbers = new int[] {1,2,3};
Console.WriteLine(Sum(numbers));Reference
- Spread syntax (...) - JavaScript | MDN (mozilla.org)
- What's new in C# 12 - C# Guide - C# : spread operator | Microsoft Learn
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.



