C# : List

[".0s4*0|collections;datetime-format;list",["F@eCDNO^c","BEMIIIJAMGLA","OOBSTUUUUTTUUUUYFGDHDGDFOCBOBOCCEWSTTUUUUTTUUUU","wredd.",".NET","Array","Dictionary","List","String","2D","Async","Console","DataTable","Dates","DateTime","Enum","File","For","Foreach","Format","IEnumerable","If","IndexOf","Lambda","LINQ","Optimization","Parse","Path","Process","Property","Random","Regex","Replace","Sort","Split","Static","Substring","Switch","Tuple","While","AddRange."," AddRange adds an entire collection of elements. It can replace tedious foreach-loops that repeatedly call Add on List. We can pass any IEnumerable collection to AddRange, not just an array or another List.","Example."," We look at the AddRange instance method from the base class library in the C# language on List. This example adds a range at the end of the List using the AddRange method. The term \"range\" simply means an IEnumerable collection. ","Int Array ","int-array","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto","br","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto","Based on:"," .NET 4.0\n\n","C# program that uses AddRange","\n\nusing System;\nusing System.Collections.Generic;\n\nclass Program\n{\n static void Main()\n {\n List<int> a = new List<int>();\n a.Add(1);\n a.Add(2);\n a.Add(5);\n a.Add(6);","\n\n // Contains:\n // 1\n // 2\n // 5\n // 6\n\n ","int[] b = new int[3];\n b[0] = 7;\n b[1] = 6;\n b[2] = 7;\n\n a.","AddRange","(b);","\n\n // Contains:\n // 1\n // 2\n // 5\n // 6\n // 7 [added]\n // 6 [added]\n // 7 [added]\n ","foreach (int i in a)\n {\n Console.WriteLine(i);\n }\n }\n}\n\n","Output","\n\n1\n2\n5\n6\n7\n6\n7","We see"," a new List created, and four ints added to it. Then, an array of three elements of the same numeric type is initialized. We then call AddRange as an instance method on List. It receives the array. ","Result: ","It displays seven integers, which are the union of the List itself and the array we added with AddRange.","Console.WriteLine ","console","Internals."," I wanted to know how AddRange and its friend InsertRange do in the runtime. I found that AddRange is a wrapper method on top of InsertRange. More information on the implementation of InsertRange is available. ","InsertRange ","insertrange","Performance."," First, we know that AddRange and InsertRange are internally the same method. Second, we know from the compiled code above that the internal implementation normally calls Array.Copy or CopyTo. ","Therefore: ","It is impossible for AddRange or InsertRange to perform better than a plain Array.Copy.","However: ","Array.Copy itself may perform better than manually copying elements in a loop.","Array.Copy ","array-copy","Summary."," AddRange appends a range of values to the end of a List. InsertRange, on the other hand, can insert an array between the elements in a List. These two methods provide a convenient interface to List range manipulations. ","br","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","3679700504","data-ad-format","link","br","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto"],"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG4AAACCAgMAAADasxWRAAAADFBMVEX/6Nn///+VlZX29va5ksB5AAAASElEQVR4AWPACZj/f0DmjkqOSjKtQgcLyJccZiEE9SOmP8mXHEaBMBoIo4EwGggryJccvvVKKAogTnJUclRyVHLklgmjkqOSAALWyrsxEHLDAAAAAElFTkSuQmCC)","url(data:image/jpeg;base64,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)","url(data:image/png;base64,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)"]

["url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAL4AAABBCAMAAABYbu5jAAAAMFBMVEX///+1wv+jqv9siv/p6//W3f8zZv9gb//19v9NK/8zAP999//S//8z//8zzP+z6P/0gInFAAABg0lEQVR4XtXXy1ICURAD0H7c96D+/9/KQqkhlEKD0iTrWZzKYtJXbou2s+jvn1Q55f2mfAMOb6Ec5D6+c/ObcvOdm98qN9+5+a1w842b3wo33/6Dv2H22g3zCL+PKF/uSKDsGL8pN9+5+U25+c7Nb5Wb74R8h+ki41eYLja+Qf1k/AL1k/HF4XIg4ytMFxl/X7/z8aF+Ov6A6bqR//FTnswXa2B96LmyPZtfoH4yvsDlwMaHy4GLj/Xz8RXqJ+PD5UDGh+ni448O08XEh+lSrtUVnC6qm+ey/krGx+li4+N0sfHh7Cfj43Sx8bF+Mj5OFxkf67c8frF+jJUovzRIBr/4+kovMb5YPr/OdcrUGL9k8FG/Tw3xxbP55/o1R4hfk/m6IBbii+fyJ/JnjK+5/HWRGuJLfzG+xvh6lX89f8m3GH90ar7Ya/FrkF8y+XNhRpAvlsi3+H8fUxP5A+svYb54Hl8Uy4/zNZEvCvo4XzyRLzrhXg7zNZMvw/o6ptsQpvDnE+wJyVGQ5SG7AAAAAElFTkSuQmCC)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANwAAACNCAMAAADrVuThAAAAYFBMVEX////4x9v2s9D85e761OP97fP++fvEwIH0msH+8/fe2HbRy3zq4XH71I6VlZWhoZq9vKWxsbHNzc3PzKXi4uKxr5Lx8fH28bD4+Pjd2anp5a3/+rP06HCa9NH/9Gj/9429Bui2AAAD/0lEQVR4AdzYa4viMBTG8bwr1OE5J9dexul+/2+5GGZhbepYY8Rn+n9hQAj05wnWal5REkmXNYgzh8sBWWWB0RytUWxGOag5Xi7kJVjz3j5fkfq8+Ly8r5fidDowTubj4gZ8/grcMHnVGKOqn3aMI2bcJL8AN6ngqujnPTiv7Lghy4rED3dx0XPjBsWtxN/DYaLGTYIfkpsXn+EzZmLcoLiT/oTzGHhxg+Bucfv6ccGpfNLisq1Sl0cqkQlXYQO2BAM0v9DiIna2QZgvb3penMfupsIWIaqyH4f/+3qiP9eZ7RL2J+P1Vot/2dHsqhluPbntLB7Irv5iQKGjwgU8VLi50xLiLFA3ulEKNxsuAZWjc4WbDueAutGNWCd0OIvK0TkUseESUDk6yz85h8dL26cSyoazeDx34w6S2HCoKB8/3TCT4RJyFV8pglXWsOEcarLFp7L/t+VXERkOyYTSRoezqMoZVz4tHAUn643BHAeH4oGAESeoa7XP8ePq0yPjLCXOEkyOHecoce7IuIAmJUpcQovEUOKMoEGOFKdoUCLFhSZ3ORpc+3MZaHGuweBocO1Hl+hwQa3knrY5Q4ZLFq1S86bWuOW7s6BVcXmu9rjY0EaHQ6u6hQ/XoU39Qohb+oink+68EOJy54++P526rosxijwKi6ePJUeJKztfuP3pG5zJcgUSiTF23akvJsaB4+tvu3WX4zYMAwGYpH4wfmhP0Pufs6VKrdiFoZdULjadeXAUmA73A1aUiSOOOOKI+zK47zl4IcdwL+Rv4YgjjjjiiCOOOOKIIw45xBFHHHHE/Y84HuLEEUccccQRRxxxxBH3ZIg7hWsKmJX3xBk874kreGNcBdBi/ZY4+ZK4CkANsCqe6/e6iwiA2tRgGHFfUYzKdNcXpuOZq/qzxeuqGeJ3vMG4oX010Jp7ncRFdG0vWBNBZOFmrfV1NxYpVcQQsfFQeqwhkns9gEORPpqZX25wF2Z0h4OIYqZJvWfnXkdxpY8P9av1OUGCph97Tr1Uun/0ddcfbNIwfqdrGqtteEaDS4pXyxX/Fb3kXj9O4uIsM7/o3FB+sdJFconG31zibtSG3PfR+Br5wMksKGvwpl7fzuJCMIbAr0xcTdNyMha9LsHnoqqGkZobIA3e1esxXORVnCKyx0Wex5UXcA1j2tcXcAf3nGTL7Z7b4nzdY71wt3vu/CEerTXmoQNKxt1Pyz3uusWtaZl7PXPOlfXlBpfPuS2uzCPMkRmXzrnc66E3FN3h0hvKHrcIQPkT19JJ/xwu3i2LGmBW6x1Oms7KPa6r+Y8UtU+49W6Zex3FSWvyL3MW91iII46450PcPsQRRxxxxBFHHHHEEUccccT9BMmBXcwVjbcYAAAAAElFTkSuQmCC)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMkAAABhCAMAAABLV3W0AAAAYFBMVEX+///q//3j//zc//zy//7ojyrh7P3UiTj5//4d9+/3lB3ZNKX1nzP3Hbf1NL5Fvrnk8P7s7u3uwn3uftVy+vXx9PTr9f7d6v7m9ebp6em4f0hoaWm0/fnpyOvp5caVWYCLfXimAAACzUlEQVR4Xu3c2Y7iMBCG0S4vWdj3pbd5/7ccyK+O0zFIccUam0x9l0gldHDTEKnCW/ZJ1fCynEdVeNnM+w4zPFgymXd1GKGYHOZdPw4KCRaUct6DgKGGBgwoied/S4wBQw8NGFASz3uQy24xC2mxuxDhhM0dUuxXy5BW++LXvD7UYR10nwLINxxBlm8ig4i+4AiyfHXmP+vwPkHpHgnRBZBASnMqOBFAAilFO69rTpoIh9I5kt2M0w4SItovOe3b+QNLcsChdCVqwZIsVEMhUiuWZNXO17xUT0KkZrwUIbXkhfkxEoIEkDESUBRX0s6PkIACCSndAqwty9LagRINidIOMG8aKGnnmRKtnknK959Ky5HM/7TxJeuPpnESKJBlS9CcIQEExTgTVPIliCGBI6IEDZIoTxJyKO2854gqsf9e8hFNgn9aliUBBZ7EZ4L4EhdHguJJLP994pqPkqzXsSWWIwEELRmS9bquo0tmLImDzBkSaBL/dfmQfCSWI3GQlJIep2RIHCSxpERciYPcSyp5j/kZH10iknI2AQkgLy1x73Y7e1UJLyfh5SSMJioRiUhEIhKRiEQkIhGJSEQiEhopobwlIhHJdHYkprG3MqFdolj7XTRyv4si7HdNZ+ducnuQ6XdTTYTd1PT7wgbjwfPaPX8eO9yAgALL0NzzJ96rh8Owx918+nsdvFcCBb8OSe8/8R38VzKHe4LMcXt1bY/mR7M5d9u0AKW7qUaS9j4tZK69tgbAc6/CAK77GUASBvHVa9tIzl5FI9F+kKSmHB9IjjfIyYcUpxuEtB9BkpiyfSC5H0rxQLK5SZT2U1lIHkAaiQ+BRD8qA0kVSVK9lmQjEpGIRCQieZnPE/mMl+9dk/gujJ5enxSe5On1CSD5UQCpTPHkmlH1HMq8ZVLVu45vFwROXUtxah+nrkVRle2vu3AezxDDePy/TZKkv3nHL1n0R/wtAAAAAElFTkSuQmCC)"]