Cá nhân, tôi thích Phần mở rộng ngôn ngữ của riêng tôi, mà tôi thêm hoặc xóa theo ý muốn để tạo mẫu nhanh.
Sau đây là một ví dụ cho chuỗi.
//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;
}
}
Nó nhanh hơn nhiều so với LINQ và Concat. Vẫn nhanh hơn, đang sử dụng IEnumerable
trình bao bọc Kiểu tùy chỉnh lưu trữ các tham chiếu / con trỏ của các mảng đã qua và cho phép lặp trên toàn bộ bộ sưu tập như thể đó là một mảng bình thường. (Hữu ích trong HPC, Xử lý đồ họa, Kết xuất đồ họa ...)
Ma cua ban:
var someStringArray = new[]{"a", "b", "c"};
var someStringArray2 = new[]{"d", "e", "f"};
someStringArray.Append(someStringArray2 ); //contains a,b,c,d,e,f
Để biết toàn bộ mã và phiên bản generic, hãy xem: https://gist.github.com/lsauer/7919764
Lưu ý: Điều này trả về một đối tượng IEnumerable không được giám sát. Để trả về một đối tượng mở rộng là chậm hơn một chút.
Tôi đã biên soạn các tiện ích mở rộng như vậy từ năm 2002, với rất nhiều khoản tín dụng dành cho những người hữu ích trên CodeProject và 'Stackoverflow'. Tôi sẽ phát hành những điều này trong thời gian ngắn và đưa liên kết lên đây.