C# : Array

[".0s4*0|collections;datetime-format;array",["F@eBFNO^_","MAOGMLBEBGBEKAGE","OOSTUUUUTTUUUUYFGDGDGDGDFOCBEOPGDGDFOCCBEOPGDFOCPGDFGDGDFADAWCBSTTUUUUTTUUUU","wry..yet.",".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","Initialize Array."," An array can be initialized in several ways. It can store a single value or series of values. Every element must be set to that value. This is helpful for lookup tables and interoperating with older systems.","For-loop."," To start, we see that you can initialize arrays with for-loops, which overall may be best for your team because it uses the more standard style. I show how to create a helper method for this purpose. ","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 initializes arrays","\n\nusing System;\n\nclass Program\n{\n static void Main()\n {","\n // A\n // Initialize an array of -1 integers.\n ","int[] arr1 = new int[10];\n InitIntArray(arr1);\n foreach (int i in arr1)\n {\n Console.Write(i);\n }\n Console.WriteLine();","\n\n // B\n // Initialize an array of ' ' chars.\n ","char[] arr2 = new char[5];\n InitCharArray(arr2);\n foreach (char c in arr2)\n {\n Console.Write(c);\n }\n Console.WriteLine();\n }","\n\n /// <summary>\n /// Initialize array to -1\n /// </summary>\n ","static void InitIntArray(int[] arr)\n {\n for (int i = 0; i < arr.Length; i++)\n {\n arr[i] = -1;\n }\n }","\n\n /// <summary>\n /// Initialize array to ' '\n /// </summary>\n ","static void InitCharArray(char[] arr)\n {\n for (int i = 0; i < arr.Length; i++)\n {\n arr[i] = ' ';\n }\n }\n}\n\n","Output","\n\n-1-1-1-1-1-1-1-1-1-1","We use two static methods,"," which save no state, and which receive strongly-typed arrays. The values they initialize are hard-coded. You can modify the methods to receive a second parameter, the value you want to initialize to. ","Also: ","You could create extension methods to achieve more elegant syntax. This is worthwhile in larger programs.","Static Method ","static","Extension ","extension","Enumerable.Repeat."," To continue, we use the LINQ method Enumerable.Repeat to assign a new array to a single value series. We must ensure the System.Linq namespace is included. After this example, we will see Enumerable.Range. ","C# program that uses Enumerable","\n\nusing System;\nusing System.Linq;\n\nclass Program\n{\n static void Main()\n {","\n // A\n // Initialize an array of -1 integers.\n ","int[] arr1 = Enumerable.Repeat(-1, 10).ToArray();\n foreach (int i in arr1)\n {\n Console.Write(i);\n }\n Console.WriteLine();","\n\n // B\n // Initialize an array of ' ' chars.\n ","char[] arr2 = Enumerable.Repeat(' ', 5).ToArray();\n foreach (char c in arr2)\n {\n Console.Write(c);\n }\n Console.WriteLine();\n }\n}\n\n","Output","\n\n-1-1-1-1-1-1-1-1-1-1","Is the for-loop better?"," Not in all programs. Each style of code suits different developers and teams. For my projects, I would use the more standard loop style in the first example. It is more imperative and matches my style more. ","List comprehension: ","The example that uses Enumerable.Repeat shows code that is called list comprehension.","Python: ","This is widely used in Python and other languages. It is elegant. But many developers prefer loops.","List, Python ","list-python","Python ","python","Enumerable.Range."," Here we use the LINQ method called Enumerable.Range to initialize an array to an entire range of numbers or other values. Again, this can be replaced with a loop. We must include the System.Linq namespace. ","C# program that uses Range","\n\nusing System;\nusing System.Linq;\n\nclass Program\n{\n static void Main()\n {","\n // A\n // Initialize array of 5 sequential integers\n ","int[] arr1 = Enumerable.Range(5, 5).ToArray();\n foreach (int i in arr1)\n {\n Console.WriteLine(i);\n }\n }\n}\n\n","Output","\n\n5\n6\n7\n8\n9","Benchmark."," Here we benchmark Enumerable.Repeat. Unfortunately, list comprehension in C# leaves a lot to be desired. I found Enumerable to be about 20 times slower than a for-loop and direct allocation. ","So: ","In other words, the first example in this article is 20 times faster than equivalent code such as the second example.","Method used by benchmark: C#","\n\nstatic void InitArray(int[] arr)\n{","\n //\n // Initialize array with for loop\n //\n ","for (int i = 0; i < arr.Length; i++)\n {\n arr[i] = -1;\n }\n}\n\n","Code benchmarked: C#","\n\n","//\n// 1\n// Initialize with for loop\n//\n","int[] arr = new int[100];\nInitArray(arr);","\n\n//\n// 2\n// Initialize with LINQ\n//\n","int[] arr = Enumerable.Repeat(-1, 100).ToArray();\n\n","Benchmark results","\n\nInitialize with for loop: "," 85 ms","\nInitialize with Enumerable.Repeat: ","1645 ms","Summary."," We saw examples of array initialization. You can fill an array with a single value, such as -1, or with a range of values. For smaller arrays, such as int[], it is faster to use a for-loop, in the imperative style of coding. ","Tip: ","This site has more information on initializing collections such as Lists, which are often more useful than arrays.","Initialize List ","initialize-list","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,iVBORw0KGgoAAAANSUhEUgAAANYAAAA3CAMAAABHJUQ7AAAAMFBMVEX////7/f7y/f+38v//6en/1dX/tbX/xcXl+v/U9//G9f//qKiq8P+U7P+e7v//lJQSDb6dAAAEaklEQVR4Xt2Z27KiMBBF050bN/X//3aQiBvZoeMZHoYz+8myKYtFeuWCDomfcY30n3EXTXh8xtnp7p+5KlbcYYXGYE1rCpZeFCvtsBpdOPiSFe6qXfjYJTWwlgBt+AVqteXSfgnQ/MXVSl/Jpd2Svu/6oUQvrVZ24zdy6RrXlUHrr4mFMcosV2Pc+jnXxArAioZcRj/qldUaPwjtSEzPi0RnMFWpFrcJIea0qpvyZ1GEfn77laieU8tZcm2IQ17ZRVXFKurzi1VZZAzLWEu56G13XN0VPO3ktNvZ628lvUP6W4mHWkBhuRgrJDA4ETGLQusHCERFSgvDafwknvaMNXRbrAEIhDqwWo7lYiw8+tAsLsyMheF8Um3Jq90hM5ZXh3QvhLtDbq90rJYpV+3G7KKNlYo2i5nCToO0YA0OkZVBifRWUYvkOoFFHVoFL/bBbzgNtQrWpIZctlok11ksfWGllOKcMCfDrtdw7SBKALpiddX5gUFZLVMuaqK43LlRLB22T6xgQS5Wa8XqDbkMtYjSwsrhxaNyUFzXNEcZ0fUL+o6C1HK6YEGuDYU21aKeJCwwoaAq9aKUHQgNF83m1HN0UcHy1so12GoBMx1hZdnte7mI/WLXMRY8qn9JU9dCBayaXJOhli1XvTu103pxhlqwXBurIpeQWndgcdMJmpLVYs42lhxhPY8sNSzMhcn4eVILWDRF0BRCallyHeCWNuPi8AywQsRed4dFcrFaHlgkV0stksvAkjaW908sLVv68cFJhnGkFrBYLlstastjLEFBD7A8sIzdU02uulo7LIVchlqP9M5IpIyl2j3dKfaohSVExVgsV9gYr1Usd3/LBbUmqHWcaGAtFs/xQ3+ANc1Y5XXA2MJiufLGeJ2pgFWRC2oNEOY4+RjrSdXCWmtxA7LsC2HRoVxQq2BNwCK5DLU4LBe1+3T/Civtl2rCIrnkozOKWpjlSK6KWlZCC+tuN2FRawQFY9XlglqMxXKxWtnEiuexeAlhLJZrq5bTwQOrJtdeLdg8pm1ILsIqE6EvC66FxSXG4pVlhKkL1gQslmt6q9XZG6XMcrE+iJzDYrneH2TFmqlWLJbr/UH2agk9NiI4jZVbWLDw47F2dSzMf/5IrfHgsUULCzFmQlmVQS0kPiOw6VCr9wXr7hBsBBFWKxvn13NYur3ZGGJODyRL+0/RdXJ63raQXIipFst1HiuaSwjLhQh2TrhxlqupFst1AgsLl43FcsE9wiK5EG+oRXKdwPpiuIIhF3ZOwLLk6ltqASH/Pdb9NVzmoh8suXAoYSyWC8X0CtuSUwmwrKudVIoz07C+ognb7hpzCKmOJTgY4bzfa+dvVSzxc96d6P5BQiyPKYZCEmLkR8TLmqis/8L7OeoQ3slfO5m8NjNArSuHNbVzx6HkwuG38XYUr9IuHajF+cVqpZ+p5f9PtW7/pVrdL1EL5/2vgvP+tTP+TK3pd6gVfqaWXlwtfk1jhl/TXDsxlcQvsXxJ75A/ZMHNEnLfXgIAAAAASUVORK5CYII=)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPAAAACQCAMAAAABfxb6AAAAYFBMVEX////0nML5yt74wNj73ev74Oz97/X2q8v3uNP1ocX5zd/5xtz1pcj3tdH72ef2sM761OT++vv4vdf85e/5xNv+9/r8/Pzz8/P5+fno6OjW1tbIyMj86PD98fb96/P+9fmwbslDAAAEqklEQVR4XuzawY7bMBADUH4FOSNnt///l/UKSLso2mBOBULxHYK5yjRMRTY8lPbPbQ/br4G/hyp4UAHg9mpgERYoYoIFDyWMmAQ8XwjxBiKmXUPCg+qsRzTFwwI+rJOoOitgCkYLjijMEB4qnWS14HRSKdto7w4mjETyld7mwqSTsulIwNl0sGAgIoez6aQE7EA6rINl/Qo8+P2zpJcf8JjQFwB6DiX9eQmew38VERG9CKyNQK++FdBbAWrdCAke9jp7I6Dt+1AbSwULuoQBp4DHZ5oeujFBIcLnhobqrEdWdcFCp5P+ii4B62pMqOGhLxrd0TmEjGHXlHBWJ3WftulQOuktrVkn0SXgGgdMeKhy7uoQMSKc1Uk6rZPap5MwUeu0gBddAi4McDU8yPuwMogRwvyPcDqp8Z7SSTyqk+paw4ALFrTkfLQT6huA3vhq8LCuG4Br43MoYO1BX8O6Cf8SERE/Ph+Px+fHB87wk/k62HEQhKIwzFxFKbT0UjuuAN//LcdDGq1Bje3C4V/d092Xxhg9k57qZkCg94wxzycvAOp2u93H2jaKZf5n7qp0XAL8Zez6VttW53F7S6Tn/HFwM4PtDhipkIGX5OpM77dgOYNpD4yuIQOjfwB7WoLjcTDP4PsuGKkcnDodzAkc3ThcCN7jQNg+JQnh6jr/rnoC7ONjBLfDGphTt5+UnAEDsx2jJLap+iyvIxTEToGQyPpVI1gJoQGWa+DXsGmYNPJHWZxb0EnzDTgCTELUAPMOWCgMVRLYfQOuAZYjHODHHtimVQbYJbB1X4A1wHEcALd7YF8QWDClZPMxWAHsxlEBHD8G4+d/AHt6pWX4CNwAXGEwwHYHzBj3FTASZ1fTFMcPwBJgThfAz22LazFMKWDR0Zx1h8EMsMQIAN83LfKehi0GLIaapnR/FFwBHNNoUZNZFrWiFDBy3tIreRD8qwAWKQOw3AfHksCo90ypdbDJHgSASaRqgPUe+GJFYWAkCQ3HwDX+YCNlPUYAP/bALEoE94TCMTABPH0tIZdZGLW4VJFgsQ02GVhl4Lhu4XSGEsGBUH8I3ORgu24J6eRiwG4C9gwvixWwycAyB1cblgpnWwzYE7G13vtaE/LHwBpgiYEiwNcNiy3rtSRpEfcrYJODK4CbaSZws25xFwxTCtguvHoQWcHk4KCQm/YDYLthMRiXIsHWiWPgDt5q3nr0XvWGRaYhCwGLPvjOWiK23YB9CGwB5nlLgG9blhaj2gD/tVsHKw7DQAxARWbsQwuhXic9xfb//+XSbhGLsu19Fj/aEuhpEERCbNM0TdPUTWwX0EiKc7k0NRDCRc4166AjKV41miqIoJlaQCWpCm6sE4SwmqqgnhSv2pvaEUExtRUwxXRyx0vUgN2Ug7In0Rlw0FfW/WpqgNLzYH98/OehRA+4mrqBmvvj0tfP4xu/kxZTGVRd8aoWtJPyp07aXVUGHLWTbp866XDVoo+OYWpj7aC4Sr9HR875P4yOBOquMgPOKsjo2EwVkJ/wz3wStZNWUHbFTtqzGgjhaqqBkitu5ZbVHREcpi6g4aq+D7ghhOVL9b9Gx+rrU3sfcEEE37lEjAZM1i5bAAAAAElFTkSuQmCC)","url(data:image/jpeg;base64,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)"]

["url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG4AAACCAgMAAADasxWRAAAADFBMVEX/6Nn///+VlZX29va5ksB5AAAASElEQVR4AWPACZj/f0DmjkqOSjKtQgcLyJccZiEE9SOmP8mXHEaBMBoIo4EwGggryJccvvVKKAogTnJUclRyVHLklgmjkqOSAALWyrsxEHLDAAAAAElFTkSuQmCC)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGoAAACZCAMAAADw+V8SAAAADFBMVEX////09PTk5OTU1NQ/cPF/AAABzUlEQVR4Xu3bQarDMBRD0Xel/e/5w59m0FiNRQnWBg6vBidynVkOAJIAYLYEJF9j6VHxqly9Zxzfiig4T2jycpQPVMCQ4yiA4hCs0ebB8BMhWKRtlvxYFIy0w8J2x5JdsmR3LLwl1CSbmmQHy5RGNcmmJlk1yaYm2aGUj4ULUSblY9lvG2t6Fj1LU7M065b+k+/vrBcNpGxzIik0KKGGqDkRVQayiqaAGrJekVBDVCqIXjGI6ktEDTv7xHyyZrZQV0uzjxpWpZwaLtI2aliTcE4NK9LoG2pYkPiy1BFIITXclCboCGGClpUFL6QnqSaZySO3hpJLQ+HF9CRq59SqSaa0TLZ+XZLX05OIJLckEkm5dCRzpIUOVd8j+vsek6Ug1Z6E/af7qCaNay981KSR3Wo2PWl60hSkoOy2KE2NokZp3kjxQupQhzrUoUb3klAnJ/nVZYl9joILvRkUNI+8jjQwglawqWGpJtmqSbYqUm71i0i/M8qt0kiv3ssrKaxU/+9Eq0e59vvZzAvPHK0nqUMdih+m6O0W1T2wtVgqPq+6d3ryqDBUdIW3ZdVepM20LGpVhFrBolVQ1ardpnCYEEA5pgAKPiYvnDYCRMgfJbla10Up7TkAAAAASUVORK5CYII=)","D","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAABJCAMAAABPapnRAAAAMFBMVEX////9amn+z879o6Lx//rj//T/MTH95OP/9PT8ubj/AADj0cTR/+3b6drx9O/W9ORYTpHNAAAEfklEQVR4XtWa23KzOgyF0cFHkvT933Y3wa4QQYPr/RPqdUenhnwjLUUSmYYRs6tinqaQiACAvoVhIAp3q3KOHwmyFsQhMITi5pgf5PNWfoho3ETMHARDBGNxOGZOeU+kAqgOMLyFD4jC3+TIuAZRAWT2u+iewkUcjr8vJa+Alg+PSAQ52iCPbIniBT53yyVUjHDALiCYTflwFQcpSyiZFqH8F0g0R/TCcQjinOOV16HKX0HiKocKCDTB18sC/yVOCwk+XberZ/Vnwt+AxGIHd1vfLIDUuw+IdUBQAtJxSNstVhL6oNVZZ1bqSUcqkSqhkkLuPwhSL4ttYzu9HEKpZpowf84iTmc7TD1ej9IjsMq5HKTDdq5Uu+fTEgG8qh2lWAF4Ub0MiPM832/O8XL9OuLLiSOL0K9AgiSQAYI7cwJv5gTAdbSdThFauqdJnaF4nO19XrdB3hs69HkrCG8pwuwrCDMjGF2Dne19XhcQjZjf5p0AeUc+bUCYudzb7fYPEA+yferyugnij8MhoZN7O2YuaTszP4RDRKd43W4TCkd9VFJjCxHIdeQfEHeTdhT5sR/DeIrXBUTHitSYIBwwF+ZINURUQJ4cTkCkkgPGZ7mrIU1lU+LcnVYq1EAbpQ6vC2K+qz9XDj+r707d5jxju/JF5YC707cmSdfcIGrxup1ZBVzTwdf+V04J3eKmAgA1VYx7C/KBsMXrZvFNe2MCGN3qvC4L9ebelxAKSNqCQAtIaPG6NdnAbpTibu3TIOWvRf6+sbOA6LWBLd/mdVcDonvfec82YToGkTgJogkScoPgf/Xwu3XsfabxqjDUI8JB+4/ll9zta/4WFtWn4Eahxes3xZF8Vk7X1D5ajbLXHCFXgfHYg2y3ZaeEcEiZz/BlPJ61oZLEbw2I0laZg5M9sTbOxsyq2ixCTFTQhGP7hBzZ6c9bj/iwCaz0Im7RDwi8FHrHXL2bOzIZPKw0lAobkMTRSQDVZOa7utj2veTBFypJAXDrFbGHH3njAOtlYersYv/Jbo5CiZ6E76DKp7cSAMcB6e/hNQjYGPptxWE7BGGzLZTqSyfM6y17eA8pKmjVDpmLe3swizZDfw+vsz5ssl5eN7aDeCDsWHueM68frYgdiwlpLcTYuWU7a15vX8eG9i3bwYET5vWmJ6h1XfsB/8ndXBdIf96et5vrAGl37RVe7wexvY7Xet12YejYqF/odfu/U6NrJx3uxlPhBK8b8YMO117rdVmr6OkpjeR14RaSKFv0Tte2nwr/lt7pgY9WrzbYKQikYLn2Qq+L9JYqeOl25zsv5sTy3gqNbvyDXu/9vY4WfsLr/fTtIwn2e91umPvp+0nwb3pdxBoFwQL5q163UchvIYBSOMHrZ/8Q97XMInhKZkRLnV4fTLbXB5M9HI8lu/kbTHYdHU66vY5+zMyyB57BZM87Y8j+oe+YAZF+geWt10gOcYvqUpleAul6aCxfGO/XB+CwRrUBODrmG4/TmCDTBGsMiqM1V1J1vVDgNJSYy0yzCJGIEH8H8R86J7+C+8H8WAAAAABJRU5ErkJggg==)","url(data:image/png;base64,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)"]