Dot Net Perls
Top 37 C# Example Pages...

["+wty.tss.XYbBST~~}T~~P6F.BP666F)BCE*BCC(P966F(BP4A#CCPFXS}T~~}T~~","Count Array Elements."," An array's elements can be counted in several ways. Collections in the C# programming language store their count in a field. This influences the performance of counting. There are some complexities with the syntax and speed of counting. ","Counting guidelines:","\n\nFor ArrayList, List: Use Count property.\nFor array: Use Length property.\nFor IEnumerable: Use Count() method.","ArrayList."," Here we get the number of elements in an ArrayList, which is a non-generic collection that stores its length in a property called Count. This is identical to the List collection, which we will see next. This property access is fast. ","ArrayList ","arraylist","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto","C# program that uses ArrayList","\n\nusing System;\nusing System.Collections;\n\nclass Program\n{\n static void Main()\n {\n ArrayList ar = new ArrayList();\n ar.Add(\"One\");\n ar.Add(\"Two\");","\n\n // Count the elements in the ArrayList.\n ","int c = ar.Count;\n Console.WriteLine(c);\n }\n}\n\n","Output","\n\n2","List."," Here we use List, a generic collection. You must specify its type in the sharp angle brackets <T>. These collections have superior performance and usually preferable. List has a property called Count that is fast to access. ","Property ","property","C# program that uses List","\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\n\nclass Program\n{\n static void Main()\n {\n List<int> list = new List<int>();\n list.Add(1);\n list.Add(2);","\n\n // Count with the Count property.\n ","int c = list.Count;\n Console.WriteLine(c);","\n\n // Count with the extension method. This is different!\n ","c = list.Count();"," // BE CAREFUL!\n ","Console.WriteLine(c);\n }\n}\n\n","Output","\n\n2\n2","Please look"," at the two int assignments. The list.Count accesses a property and is fast. It will return 2. The code shows Count() with parentheses. This is a LINQ extension method\u2014it can be confusing if you don't know the difference. ","Count Extension Method ","count","Tip: ","This is a method that works on IEnumerables. It loops through the elements to count.","IEnumerable ","ienumerable","Arrays."," Arrays are counted differently and you need to use Length. In programs, an array's size is set differently than List or ArrayList, and it does not grow dynamically. The Length value will include all elements. ","Array Length Property ","array-length","Last element: ","We use the Length property on arrays, and also the Count property on ArrayList and List, to access the final element.","Tip: ","The final element is located at the count minus one, except when the length of the array is 0.","Count extension."," You can use the Count() extension method when you have an IEnumerable collection or are using LINQ statements. Enumerations in C# are collections that haven't been determined exactly yet, and they can use yield and foreach keywords. ","C# program that uses LINQ","\n\nusing System;\nusing System.Linq;\n\nclass Program\n{\n static void Main()\n {\n string[] arr = new string[]\n {\n \"One\",\n \"Two\",\n \"Three\"\n };","\n\n // An enumerable collection, not in memory yet.\n ","var e = from s in arr\n select s;\n\n int c = e.","Count()",";"," // Extension method.\n ","Console.WriteLine(c);","\n // ... does a lot of work to get the count.\n ","}\n}\n\n","Output","\n\n3","Benchmark."," The Count extension method is a lot slower. In my benchmark, where I took the Count of an array 10,000 times, the Count() extension performed several times slower. It was likely iterating through the collection each time. ","Benchmark ","benchmark","Count extension method performance:","\n\n(10,000 iterations of 10,000 iterations)\n\nCount property: "," 452 ms","\nCount() method: ","2623 ms","Hoist."," In the C# language, the Length or Count property is often evaluated each time a for-loop is run. Because of this, it can be advantageous to hoist the Count or Length check out of the loop. ","Note: ","Occasionally the JIT compiler can optimize loops that include the Count or Length in the for statement.","Note 2: ","Hoisting is sometimes faster. For optimal performance, you will need to test your program. Not hoisting can be faster.","Count variable hoisted","\n\nint a = list.Count;\nfor (int i = 0; i < a; i++)\n{\n}\n\n","Not hoisted","\n\nfor (int i = 0; i < list.Count; i++)\n{\n}","Summary."," We saw several ways to get the element count of a List or array. And we saw some benchmarks of the extension method that also is named Count. You will need to use Count in most for-loops. Hoisting it is not always beneficial. ","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","3679700504","data-ad-format","link","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,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)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALsAAABECAMAAADuirSUAAAAMFBMVEX////V7/mWn6Gi3/N6enrg4eG75/a3uLjy+v3Iycnp9vuc0eOYxtaQtMD4+Pj5/f5J+Z7pAAAC2UlEQVR4XtXZ646rIBSAUfaF60Xf/22PR+xkpBurHW3x+9mIWaGkhKJOadBaq1vmkf9n78cfkB/ZG9K/hfeN9gKQf+c/audGOwGa1w03stvK7m9kx8pub2TnKrwMqq2+eN6RjLsEzsz64vWeiQjOdQ8z/AK7ruyRzsUPvsAP2aF0cOKR5uDMpXLcTqVj+yrT0niOHXnT7qe4Kk9Jdhlv+RFGWoJr7ELSnIt2OY1Fnom6tssNKSX6nbnOHsCdaleG6CP2AEQUzrVDZYcmJ2g9vGsHIjrNrn9KpUglJz9uFwz6UL1gEN+9tuc0F8+xc2nf77tfSWxY7WxamnO5fKndjOKPUZW/0g5T79iNE+gCwip/mb0AjtoNKIku5fuyh9aBXAy7sisxz636t/Mt7GHOba92RHyyh9K4ww5hzp1tpzmzuWQSTUWsPiuFHXYqwd/siHjcjlSKuGm3zy8vnWEv4Vv2ErbtJfm7+aKdIy3FG9h1Y8US9m8fuA6LI+VHsVe7sswSv6pPu2axnEz/dmW5kQ3Qu31AbuvNQbspvbKvXEfsB/DszU579cyn7Gqw3Aw7tpc0tvF927f1CEuuV7syMeOLs0e39kBTSfLbXu0WHyUqPfNdR3aZYA0txUofwV1kl13H7ax/8IlrGKg6u23XU1yVSlrr0+2soWknM27+v5BrO+9LdrFU2rQzLtso1nYB75/XQ8z5S/YSTnFV3HHg4ozM/E27nLivaq7r0Z7FC5NwC3vjsgI7sheLOEa8MbEd2ZOMz63DR+jIToQiXbbLE5/hSntByHbK0gDZLp+38rwLOIDP2pGo1mOmVe7lMT2TAWN+XcjRnmr75uCwcYMcMyIzYs7x9duDRf4Jc6LSt+ztQEmF1e1tr/Zx886/C7shuaDkoCN7gNaKkXMd2cf2TMpBP3ZJY4JqN5pe7GbmwEoOajsQ7N/MzZuMMQBu18NUmocEda/G1fXtP47JaK+yvhpRAAAAAElFTkSuQmCC)"]

["url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIIAAACKCAMAAABRjmKiAAAAYFBMVEX////29vbq6urw8PD09PTs7Ozu7u7y8vLo6OjmnP7suv3no/7wzf3+/v7uyfr8/Pzw4vb5+fnt1Pb//v/t6u7z0/788//18ff9+f7q4u345/7r4O/+/P/m5ub07vf29PZvdKUEAAAC00lEQVR4Xu2b2W7bMBQFfblp974kXf//L8vIMCzyEKkbmIdAzXnOw+Bw4ICCtHoShzHBtpnRSzarXHzrkKG98nPJlE2h75C1QgedzeCtS/BdoUO+czh1SK88kYJaZWPokL1CB+HGeASFnDGuUzFaCw7sGO3N4a6w48ZoLcygVtQfhb0NHUrE6GaH5QwtOUbtIoesMQ4dstXeIcyB/cuoPxRcMIMlx6g90VHki/GcilHPBDPQY0SHJpvBj2SMjb6yUMgX4zYVo2maeAZHjtGgAznGi7k73BTyxTimYjQGZjDkGA04KHaMZukwK2hujCcxMAM7RhGYgRyjeKIZ2DGKwAzci2QvAjPQYxSYYceOEWegxwgz5IvxkI5RYAZ2jKhg6DHCSdBjhBmaiXqRXAsqyN9PdPgiXYrhc95vN5vFjX/joyLyHt71X12hfXUFVRWqQlWoClWhKjz8b+rc/yspgf4xjvqOm7F285ynGoNEGA/3IjkmDLgXye5XQoF7kewTBsJ+qoEKj1b2P8dYYxQYgR6jlI9Risco5WOU8jFK+RilfIxihB0jUDxGKR+jlI9RDPktNkHKxyj0GBFyjM8Z4fD2GKkY9xfk7TOmadrEBJXVR5/16WtVqApVoT5xqwpVAQxeU6FNKJxPCcY7fYcMY8B6ZgTwjy5mQXNl84WLJL6mUPYRm7lBfs8aDZpSLw4tTpV8kfwtM0FX3IvkGibQWkrEuBDwFIjRhO+3smOMJ/DsyDHGE3gmbowwAT9GMHCOHCMcgnMNN8Y9TOAsOcYmnsBaR47ReIIJrDXcGI9hh/YDdoxooMkxhh16lCLHqOMJlLLkGBsdGyjD/VB0Gx+ChxxjPIGHHSMatMKN0aGBIsc4CwQGLTvGyKD1kGOMM/A4dowuNqDHiAYtOUYvEBvQP6EHA/ZXyzeBhYElxwgG/E/oZ4HAgB1jbOAV2DGqUMAbPC3GPzZST8eWeJrKAAAAAElFTkSuQmCC)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJgAAABZCAMAAAD1qB0CAAAAGFBMVEX///+vr6/Nzc1kZGSNjY3k5OQxMTEAAABgpIToAAADeUlEQVR4Xu1Z23YcIQxbX/n/P273lMYJRSilM4d5qB5DwAIJe7y8NqEi+noeIttPpD6S1xvyMGLZOvKGACqyu19pHTccmfwyyR41L2JGJuwunbEz224jVlv2bWJ4/j4USHGlx454JO66la3g/3Ytr82w0ZAU0hGUWc2+x2ItpolTuZpu5pT/vndzfpSvM3BkMakbcQSGlPTDpTmBksRi9wMoedxiAZQ8bjFFSnqd4xFIKTm3mBwnFnPvxek0ZnOJ83U6jcmOxRTUUj5JKbFBMu34Tdi18JVBSJ8LG7cQz7cW8ir0SfVnhEFJbQv4JABMwlEUmkU1Fx20Ex2UlIZR4SsAcqJWCa5th8Gt4jQWpSxEjLNg42azcUEiYGJ1J62jdaQV/EuOMTMcoI2wfp1cVFWMtwkyH4/1PJEYhLdBBxsJhH2OolkDa2KAL0uvNicWU0ktZh2MLVd21AKzukG8IlDtsqmuiAk4Cf8uMVlZGIfAMfogTCKXERM8tCDmaBIpHNSLupB6qaXOhwRuBnqR98K4SkNiiebYdxsGZ8TIdw2Y6JsW4140EhsO+lTJwALggsZPFLsf6JxcAKJUsk5Htog5UB9YjKY7fqKcWAlGBCAWo5d2h1hyAbjF+IlyYuOY86zJLcZPFBNLsLL+lQC8YeEFhKcLGcNzAXhPzG83/zLxCr+RXoNITgqIL+LYoOReBc+9gmWLOLUqEGDfYryAkGzhWIB7LRYL74eZ6WUW4+mVe5/Hu99izvZ1v8UE0y4lOfwKi/GCpZA2FeAmi/FRLsC+xfjt5mF4+8AtRkLvbAtflssspmA2HlQNLEBuZxV+u2vQkRSmSADjku9X8EgoZAAllBLjkvM8ZVjIJA81VEojJxYVAAopQIiZZgLX47888BcXbjBrBbIeI2b0fVYJL/QbqaKjlLcIoeK+INYvUKgL8ErLoO+znJi2AezMCzJYrJA1pInfLLCUtVMcsgQZEYsNprxHVSZXFS7rLGA63lvBZGox08lOU8ltLwNAZulokcjP3AO3gFLUypMYVrwGhH8cuC/X6BHNg1Rw+Vgxnb/ViZUrR0R/a2OI+i/2kahvvI6j+oHD4N/n53H+pX+/BTxvsfbfYhst4KPQznufpddnwU97n/bgT81i9lQl83nZ9XnpItSH78x4ACnLNoPJcQ0B9HiWALhAzR98s0wlubKPewAAAABJRU5ErkJggg==)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG4AAACCAgMAAADasxWRAAAADFBMVEX/6Nn///+VlZX29va5ksB5AAAASElEQVR4AWPACZj/f0DmjkqOSjKtQgcLyJccZiEE9SOmP8mXHEaBMBoIo4EwGggryJccvvVKKAogTnJUclRyVHLklgmjkqOSAALWyrsxEHLDAAAAAElFTkSuQmCC)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIIAAACCCAMAAAC93eDPAAAAMFBMVEX7r11HR0f8yZHLklZZUEmyg1P8uXLjoVmLbE5pWUrAi1X+6tPVmFfyqVx4YUz//v3zEySOAAABHElEQVR4Xu3cS4rDQAxF0av6+5fsf7ed0ANDV8b1GvLOCu5AWMhg83w5UkOgpeP58k5IyKTfhIZQeyckpNKTA7GDhFiiIdb4KmZmZmZmZnadH1ysdMYHpxOc4ISbE5zgBCc4oesTKDG7WGrEZGOtGpPBWjkmlbUu+TTCNiUA4nl8gHoeB4B2S+wsF390lnuopxGqehRg1z6YmJdlRqBIp3FelgWFqp5GyOpphEu6JudleSFRxw0xs1xHxDZqR+Tc7k3dQb2syy4ruO0A2tO6dBYb8pOy62/7PWZZfttHBXCCfhy7/PXCJj+sI8vfLwwQNwwU8j0PW0ZkHyUiytiRMDMzMzMzM2v6gIRY4kDs0H/wrv/s/3/8/ED/C4gfHWoMKlwF198AAAAASUVORK5CYII=)","url(data:image/png;base64,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)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANIAAAA9CAAAAAD94GjJAAADQklEQVR4Xt3awW4yMQwE4P+heLq8VJ7HZ5/nOtf8DS61QIFJCt0I5kKlKM1+8tpit/3XLiEBd7cedwfYVG63kG1/WpAIt0H8PosYb8G0Cp7Bi0nJGcRHqNT8GsWrQ19L4ggijpM7ZGD2d6Rm6ya5Q5foWJI26R2qRAeTtMmliaJEf0ty01kmmSjRfhKWSRAl2k5y0QxyR248ggTLeET0RpDWu4lmh5HcAbJlCElyAPzZROi5DDuKRMq5dHsm2WQNMFg+inQvy2dStN9+EkS3q+YfcHeTKEiqTKJK2EBqgiR22Hgtq/4eJH9A4u0A3X3j4QlSehOwh4Rfk/yccaflQ+XuIc550t1nb2RBDiHpiazDCwg9Q7GzbSPR1o9EiHAOR+Rw7iHBfnffdVAtp9OpfOXxLs8cQKKbrY9wdpGjgyJtluR/QYI9SlsoUj1NkvATdx5NmjsQWSTrQFVbRtBzNIkr4w5fonoNsO+CfVu/f4yOc++fxdrtQrRk8QvAajlvsBaJX1fLKRjlfGp8SpLPipJUNOk2UAs/HZr6SJDqComzjRQmlG6qWCRVtVBPpUSdxqRYwJcRkmSYFQWpA84qihsPjdF3/aOohUgNQ5LKmRwWno8qLxkPud27qZwi/pBkeYXdLBauCp56XnVW3H9TJIMWJQm0GioqkiVJLbQYD9ckC07OhzJNMmhRmtgZHVVfSArPkJTN1JmYJJkUJSlqw1eSAlfM6l2Sd6x114XEqwDDMmmRhWiKRHKWlM01IKXQY5T/Exe6+Nre6WZdVHM+tNDZmJQyRcIdUjZTSZJ+ujDO0Xk+PFLytIggyRsvBkQdkALdlz1JyoRJUV5/PlvYkASgWwCsjYcyIOUhLUmqANCicHtM21KZ8Pge9xSJtWuqlXukFt4kyTL5VI1W4hlne0WilZKkX+Rp0WZStNIzJKhv7Mc+1UbnrZCUaAHz+tcp+QVipZeUaCspW+mJiQd77pL2v+Y3vFi0/524cV60n0RqUZK0aD+J8XwNkg/+om4Pvv75newjDS5PPAPCprKVpMOPI3l7JxJmSPw4Etqnkbx9Gsnbm5Fc33XvRmpU/yf+fqQewsX/5r8bKUIiZe4A21vmP24hqdv1SRFyAAAAAElFTkSuQmCC)"]