โดยส่วนตัวแล้วฉันชอบส่วนขยายภาษาของตัวเองซึ่งฉันจะเพิ่มหรือลบตามความประสงค์เพื่อสร้างต้นแบบอย่างรวดเร็ว
ต่อไปนี้เป็นตัวอย่างสำหรับสตริง
//resides in IEnumerableStringExtensions.cs
public static class IEnumerableStringExtensions
{
public static IEnumerable<string> Append(this string[] arrayInitial, string[] arrayToAppend)
{
string[] ret = new string[arrayInitial.Length + arrayToAppend.Length];
arrayInitial.CopyTo(ret, 0);
arrayToAppend.CopyTo(ret, arrayInitial.Length);
return ret;
}
}
มันเร็วกว่า LINQ และ Concat ยังเร็วกว่ากำลังใช้IEnumerable
Type-wrapper ที่กำหนดเองซึ่งเก็บการอ้างอิง / พอยน์เตอร์ของอาร์เรย์ที่ผ่านและอนุญาตให้วนรอบคอลเลกชันทั้งหมดราวกับว่ามันเป็นอาร์เรย์ปกติ (มีประโยชน์ใน HPC, การประมวลผลกราฟิก, การเรนเดอร์กราฟิก ... )
รหัสของคุณ:
var someStringArray = new[]{"a", "b", "c"};
var someStringArray2 = new[]{"d", "e", "f"};
someStringArray.Append(someStringArray2 ); //contains a,b,c,d,e,f
สำหรับรหัสทั้งหมดและรุ่นทั่วไปโปรดดู: https://gist.github.com/lsauer/7919764
หมายเหตุ:นี่จะส่งคืนวัตถุ IEnumerable ที่ไม่สามารถนับได้ ในการส่งคืนออบเจ็กต์ส่วนขยายนั้นจะช้าลงเล็กน้อย
ฉันรวบรวมส่วนขยายดังกล่าวตั้งแต่ปี 2002 โดยมีเครดิตจำนวนมากจะช่วยผู้คนใน CodeProject และ 'Stackoverflow' ฉันจะปล่อยสิ่งเหล่านี้ในไม่ช้าและวางลิงก์ไว้ที่นี่