["..E$ ","A+BAeDAfC0C(BCCE|F9976666696666}X(B.CE(BCEE+BCE(/C","Swap"," exchanges array element values. It acts on two separate elements so that they both are still present but in opposite locations. In the C# language, there is no built-in method for this purpose on most types. ","You have to implement a custom swap method for string characters and other types.","Example."," This example shows how to swap two characters in a string's character buffer. It also shows how to swap two elements in an array with elements of type Int32. The method that swaps string characters is more complex. ","Int ","int","The string type is immutable and you cannot assign characters to locations in a string directly.","So: ","For the string swap method, we use the ToCharArray method and the new string constructor and return a new string reference.","String Constructor ","string-constructor"," .NET 4\n\n","C# program that swaps characters and array elements","\n\nusing System;\n\nclass Program\n{\n static void Main()\n {","\n //\n // Swap characters in the string.\n //\n ","string value1 = \"Dot Net Perls\";\n string swap1 = ","SwapCharacters","(value1, 0, 1);\n Console.WriteLine(swap1);","\n //\n // Swap elements in array.\n //\n ","int[] array1 = { 1, 2, 3, 4, 5 };\n ","SwapInts","(array1, 0, 1);\n foreach (int element in array1)\n {\n Console.Write(element);\n }\n }\n\n static string ","SwapCharacters","(string value, int position1, int position2)\n {","\n //\n // Swaps characters in a string.\n //\n ","char[] array = value.ToCharArray();"," // Get characters\n ","char temp = array[position1];"," // Get temporary copy of character\n ","array[position1] = array[position2];"," // Assign element\n ","array[position2] = temp;"," // Assign element\n ","return new string(array);"," // Return string\n ","}\n\n static void ","SwapInts","(int[] array, int position1, int position2)\n {","\n //\n // Swaps elements in an array.\n //\n ","int temp = array[position1];"," // Copy the first position's element\n ","array[position1] = array[position2];"," // Assign to the second element\n ","array[position2] = temp;"," // Assign to the first element\n ","}\n}\n\n","\n\noDt Net Perls\n21345","The program"," defines two swap implementations. The SwapCharacters method receives three parameters: a reference to a string, and the first position and the second position of the values you want to swap.","SwapCharacters"," invokes the ToCharArray method, which returns the logical char buffer stored internally in the string. It uses a temporary variable, assigns the positions, and returns a new string. ","ToCharArray ","tochararray","SwapInts returns no reference."," It is a void method. It receives three parameters, the first being an array reference with elements of type Int32, and the two positions you want to exchange. ","It uses a temporary variable, but the int array is modified in-place so no reference must be returned.","Int Array ","int-array","Exceptions."," This code will cause exceptions if you call it with invalid parameters. If you are developing a library function that will have many callers, you can validate the arguments with if-statements and then throw. ","If ","if","This negatively impacts performance in tight loops. It is only necessary when many callers will exist.","ArgumentNullException ","argumentexception","IndexOutOfRangeException ","indexoutofrangeexception","XOR."," An interesting bitwise algorithm uses the XOR bitwise operator \"^=\" in the C# language to swap two elements. In computing history, this method was faster because it reduced the number of registers in use. ","XOR ","xor","However: ","As Wikipedia notes it is now much slower than using a normal temporary variable.","XOR swap algorithm: Wikipedia ","https://en.wikipedia.org/wiki/XOR_swap_algorithm","I have confirmed this"," in the C# language and the C programming language using GCC. In the C# language, bitwise operators are not the focus of the optimization efforts in the JIT. They thus may be neglected in optimization.","Summary."," We saw methods that swap characters in a string or elements in an array. These methods were tested and proven correct on the input provided. We also discussed problems with swapping algorithms such as exceptions. ","We noted the XOR swap algorithm and its drawbacks in modern programming languages and optimizing compilers."]

%iVBORw0KG;)NSUhEUg?AKw?ACYCAM?ABOBPJR)wFBMVEX::079/97+r+6Ob+9+36+/X+4Obi4t/+:z9/uv9:j+9Pn68fX29vb96/Olo6VnYmP++Pv81uq5sbT+5vD+3PD/+vw?AD94u3+/P343ur6+Pne09fy8/T:f78/f/NwciI;L/6/v+xeP76O/9/f3/4vhEQEHDvcD9z+gmIyT17vDu8PT06u7Nzc315er4+fP8+/vn5+bp3OD8+P:otPq7vT16PX6+:08vD49P/t7ez6/+78:P0++7c3NrGCxNM?ARCUlEQVR4XrzZ527jvBaGUf8n1Xtz7y21TD3n/u/qe1msbZoRYsTyPAPFwJhBVjaoCJYGvTS0Mv5zUVjRsn+b1jy1FcUCDqK27wUyrCDtv+ZC81SZgdNaJbWSsVMQQ3vqn1pBcfh5rKqCYkFWOB3HMRYEBTK4o9HoeR15nxetn29TNhPfj4AtPN/3HriRUz0tFiesoP4Wi7nrPkz8yN1xXgWpsXlH6Dj+3Vy2yxOUl3V0vAnrZygaLrwMTdyzoGHQSoWyOmrxfLzKMm8+x/uE1Y2OdfNZ5Wy22YRJPL5FG2XZ2M9Ww2f8+EmW1a10Pp+7GJ3YlQUKhBWL11g897fAxlgAbVCkaUrc53HzeTPRJomj51sG6wtwg8E+vGBqLqUwhbQ+SSwWM4DLeiyw0HKG2YoKJFeuDx3Y8u3tTWjr8W3YY5YdgeUuCOdY1+WOwqbAci6xcI5jidWjTVWFKmo62r1JbVhGN2P/T1hKYiFFQcU45xp7lNg8jyVW1nq9pqs3qd3k3vexntoCwzW2I47xORUWrrBBwDgSewVHnCtsLvYBadEV2OQGLE4snNqTYbHKttts5RpJbHrCuu6LWpyP8XXlKSy0mvsK7ZfYGbDfb7yFtRkWtZ9lfm1jU4lljIsTLhKLSzFYPVreXsxeVd7+VJ9Y6hnHsKj4w0OLJGyVBphrIK15HMc1iIksR2KjaC1rsVTvWKSx/FyJ5FcWAKsGm6uStjLPsYa1EZa6P1bNi3Mbm5xXlhjtdEpaG4vujRVUqdUnu5BjF5SJUQhs7LpT1D1ZdH8siJWjsQy5F9gQQauxxCUsdW9sILEOsMrKXVhLYsrUaKeGFli7+0+2kpNFhA0vAzYWUuIKrF3vWEZYICtYgdVa3oldxoi4hDXrF7t4cviOsNxxyGpjN7IwTJKlaEpa773N0PaKHT5VAqesCouDrAZ2Q1hoRRZWdh+s/RkMWMPqxsCas4U6Ia1OY21tn1j1yQVeVSX+0dmFYqkNzRLSLg2srd31h0V0ZyA4ZWLlBSxMLK0xXO+jQxv2iYUWLVAhStMWy8+wCMQOrsQuCWpo3/rCkldXpKjFSiqsCVk7tV6SfIqd3Q+bKmygrITV1g1l7lyB3czM4dIeuC+WEda0WlrCLjcYotUdsYWBpcGStUv7JXYDbO9blnaBgSWrpSUsae3BbuK7YKE1Bpub1pmhTZDGJh1aum/QK7ZQ2O7Bgqoi7Qm7rpfhrEMr7x/V676shLV3gW0lLWFfouUypPcputfVMxbaQGG5xuaEJauJ1drxeImdQBFU30Uc9UQlK2FdNxiy2E1TV2PJmgQs3Exjc7TTcVQLdWK3zOvoOBr1aV1ILO0CNmQDlwVsaA02jYNpHrAL7PRl7XXf+R4B26/VxAbuwE15PLCwgzBnM8bMM0z0y+j1h2qk69FqYwtgA+YObWzCp8Cak/34+Njt0fv7L/VxxnGcvdMfdkgtNDYgrJsOsGeHA5e2rC4ZpGE+GCTGZGE9Yd/fIUWPTfN97LCjhagQPRl/DObzOJcfami0FPTmZH/KMNJfTfM/1aPTWlEPUtt6Fda4hknsTm@iwzsjVKyqoeMn2PL7snCej22L6scq8JWGssJS1riWheFLuyo7UYo0lJQT9jqDDvXk7W1l7tgevjZge3LigpkYpmFpV2LtNXGYrKPN2G/NNpWa7KW1rYC2/41cJzXxvkG9gtimqYWlawCix4IS16ytoNVe7ZpnP3+db/XWse5est2SdO2k1pTgRVZWOIaVGOw8qKwa5oG2GbfOLLmDHs9lZSfJJlkdZQVP1piSSvrsiJxm1b3Q/c9q03diafyAK4n/uT53Oo4LfYArNRGvj+pwxAvfmRb4wtr07STHY2c6lHmONdhbSpST+UDL0OrnaBqK2EPJ2wkF9X1Fi/bMX1W7MQ+6sstsI9:8j+dmO7qUEaiPRT+aBeRessO4JpWQm7ynz8Ul7pebWfeSHS1jxfxsvYlVTCOg6gEvsIrGRD+/gl9QJK6afyB3ZgNbCsYpBWmgqrxKIHhN8mAniCjdtiS0mFNYZVRNgfwOo0FlZgr7MSlbGAqQT2KJQs2sKNhBPUFosIuy7xDWWJ+W43girKEaiuGixZLSykV2NpqIzST+VrNsky78AQp8h6gV17KzFZopIVBcKaFoWJhZWwX1uJSmFGBxziNap9jxv93BmTfcmy.6vjF7KCcwiKYVVZFq/hTWtzLRy/VSe4/T2MTTLaox2IhfXEdYKM1nn0sovsfqkUifYH8JeZzWhsvUW1gdgRf5/pNtRb6M4FIZhCyBth2MktNWKBpor52asYNJcVTs7+f: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@Svn4ROsS9gClxKYGTbmOhbIAU+a2dQHILB2zBpm6BbzL+fjKVx9TjuXrbLY7BASsdWZAqxaTFrQuZ06xmQMlLkWyanJug5rVmPN8vMsY+ncwpqwmTbnzlXrdmx+3xZswkORhWrLUcVit2OT1sMasdVu69aN2Hq3CVvV1q11bEfaXbCuwjIbrKVqkTK1VmyO7QgbYlZhjcVSqRYpUXNrHftoQsiaYWupa1WVWrcm7PlFfmTNBs3btUhBWrcm7DK7jWkjdrcFK1Ut660Imm0BbE+pTWu2a+vWCrY+rVmvlWuodWxtWrMRK7/cStMaaONJCFIEp2DYjJXrqcjKVy63caa3nSvXUuXal1kjO1i3YVNWSJH628l2l9OaF1g3a1Pq0EStaoc0r8mGINu8OVpeD7tB5G+G3SabqLfHDpO1jkzO2okXrbSVvsW3IbfgCo9AO9Eqir2GrQdmfcgN2nX48AJI7v3UuUOByg7LVjTbD8JPNzgNFlCAB+fFZKehdFixlcADAJP35gbn13orO++7yVNEYubBVkZbGUOxln1/IrafvOh6rJk0w/Yolsg3CBod8IT/3wGS+lYAblIsYrwX3k8EQMSnth5uVGz4yN4OjPUWqylvFbT1dsVSzKqt2/Mf6gY+tVYgD64)ASUVORK5CYII=%iVBORw0KG;)NSUhEUg?AG4?ACCAgM?ADasxWR)DFBMVEXv2f::+VlZX29vYeLcrO)SElEQVR4AWPACZj/f0DmjkqOSjKtQgcLyJccZiEE9SOmP8mXHEaBMBoIo4EwGggryJccvvVKKAogTnJUclRyVHLklgmjkqOS?LWyrsxEHLD)AElFTkSuQmCC%iVBORw0KG;)NSUhEUg?AM0)8CAM?ADyrM7n)MFBMVEX:/9QPlH6xf777/yrqqudVKLHZ811V3fV1dX4nv7dcOT3e:td/X94f8mJibq6urucMqG?ADhElEQVR4Xu3Z2Y7jKhAGYGph9/L+b3vS2Tj5BwfswRc98n8ZyUV9IKvLtPmLhAUTzG/NpTk/l2bOGH9pLs2luTSX5tJcmgZn5t+tQc8v1VwaCSF004J6Wu7xqgc3ZFX1XuvV7wlyULPqsznq6E11gajutoRHEV+hUKkb/j/3a59m/WhP101HcWNIu79D7vKbparB6ipG92mwAm0fjxQ3xodOzbIWDGhWv2C80B6NePK39HBEafHWpXyPc9bDpvdpVNg6Z:UBCJrrbPWU+HQskfzai7ZUsJvdGVdhjgLnLaGHkUcagy7qdT1P5D8jO3T0Ed7jr71JZxrSRY+y6tLFoDNuarB6pYWu09jp0/gRNuHUyyYRC8NyVdNpoIBjcRK2bRH83EwwAlfLRgLZ4qaIqBc1Uh1l/IeTapVgLbg0RaHvmsmSqgBDKRfM315EDUmNjgezhQ0sN2gkXxM006qvzjceox2nClq4mma/GwLNO3tO67hfJ7GVjUmdp5pv8arPubcitTFQRpX0ZQNjDzPRoI6NwGHdmpiqQyxtHjD+zXJuV6NuVOkTL+UoIeaxszz3NJExDwa5y4NPsfIeY2GkBj5czCkjfcA09AIYNxrqOjRoDiYWNUE1MhzMFzeSUc1yfI8y8aMQa+9jEUTw0/Wb5r07JqbmhL11rkpOWdvKndM42ghfCGxK2By+9vTPjVzt2aOH00d01gwx1pX0O4ODS5HqNkYDFPq1iBaQVP9IpZdGo8arNcc1Y5oqKGh8sLP78hoDechmrSgBsrUx8TBmjmP0bguDf6BEB2ryYM0dul4b7BO8BRGavhMDXIRHGhZKAzUIMClYRqGMnijFfyjsAzS4IrTT0vE52hyGTZIVb1963o0qpo3fg+ggQelqgm3NDVeVdftOa2E0vTWaUPzTEUDj8fq1UHc6qKhgWEjb3P8lDNwhmlwNTdGw8hJ/mlxcMEVxmhgLnwmjdFIZch21rrpyz2SMDNeut7i7xr83YMm1jpy0EG5zYZVcVEqmj1jhtYPBjur/Yoa/NQlm3IloKmv6kEjPXcVFMwATXv3jmv6y3sVM0wjp2ranLQaM05j4omaNoeNGaqZT9O0OXE2bU1h92wG92m6VoXuwF3pZYSmzWEepNneMBYzTIMcNMtIjRGG1zNCHwM1+J/CKEA8pkEQxzspRmZzWnDzeDb/QqTcoQzJf4xPEguKwkrY)AElFTkSuQmCC%iVBORw0KG;)NSUhEUg?AG4?ACCAgM?ADasxWR)DFBMVEX/6Nn:/+VlZX29va5ksB5)SElEQVR4AWPACZj/f0DmjkqOSjKtQgcLyJccZiEE9SOmP8mXHEaBMBoIo4EwGggryJccvvVKKAogTnJUclRyVHLklgmjkqOS?LWyrsxEHLD)AElFTkSuQmCC%iVBORw0KG;)NSUhEUg?ALQ?ABLCAM?ADu113M)MFBMVEX::5:7k:7Z:7w:/e8uHO69Dm9Ofv+PDT7dT5/PnZ79rL6czI:3Q8NzX9+3Xrv9V?AC+0lEQVR4Xu3a+26DIBTAYc6Fu7bv/7YbKz2BFic10+LS35/VmC8EtSqqUXDWOfUQMCKrUXNxShkLBYBp/glhSLOd7vkgAJwlGNYsajGPrA5Tmb4BYC6j4dB6q;y0CMPtanRVqWoRuMugGDjMweQumeHpGV27Do/gtNptB7AtyvW6+i4J1rAfrpVgpHmW1tHmvZDuwyu0EzfzbnNc5p2m9N2WkCLevPVo1bDMWjqRofHKZ0CKtWkjkCL+tWjGLkjlmo4DE29aKUr85OaQB2CFvVrJ7QOBYCzGkGNhZaCs7b1f5pZ?ehSdC79EEjSSdC4wfddRZrHaO2LlSnMSMiM0MXulCrdrpdjFEzMz7GwtOSK5+KJW+hmKOY02W+ROtcvEhXwhRVoVIwLXZBpKewccu3comvMy6R66ZXutD8HK2hsR8dYgMQUdqGpi1o7EHrNMymCfAjo93iQd6Bxg50FHOj66joYJYB5h1oXEd7Mbe6vgONS+jOzA5oX9U+h15AG/807ojIjDmT8rlqzwQwdRdKrb4OiNUzYq4frR1/53z9I9zfcCNLsHwbL8dJNfpbtA8qk2KpiaLhI9GIK2jBca7UGOGUHYDGdXQsXbrkhLegc8to2RsAOOVaaDgYLS2hPWR06mF+OPEMhZa3JJA7A1pccM+soWFnNK+irTohOpwW/UF/0PyP0dxG48Bo5iU0dqLpSDTn2mhMnRCdOhs6dy60dEo0/j80nRP9QeNuaDgjOggaSYLB0a6F5iPQYupCu9YjGxRmwsHRpoWmAdCUErQcox7qEj3jGOjshudFU66BnvmRCMrZOl9IvLX61jWVNXxvA5qKoLFoSjtZhkDX68X8fEckrte+kfJTd1lN9/4C7aaHTNRaXy6m/vhZvlvfgqZf0fAiWpkXvthuRRP9GZpVyu6Ppi40pTrRyu+MJlpHU64b7X5Fz2OilTsjWjlzQrQK+lxoYZum+dpCo1LQn6prbmpv7chZ7UVu8iIoQKSCS4igxiuk2qOjpC/q0/WPOTPkGQ)BJRU5Er@ggg==%iVBORw0KG;)NSUhEUg?AII?ACCCAM?AC93eDP)MFBMVEX7r11HR0f8yZHLklZZUEmyg1P8uXLjoVmLbE5pWUrAi1X+6tPVmFfyqVx4YUz:v3zEySO?ABHElEQVR4Xu3cS4rDQAxF0av6+5fsf7ed0ANDV8b1GvLOCu5AWMhg83w5UkOgpeP58k5IyKTfhIZQeyckpNKTA7GDhFiiIdb4KmZmZmZmZnadH1ysdMYHpxOc4ISbE5zgBCc4oesTKDG7WGrEZGOtGpPBWjkmlbUu+TTCNiUA4nl8gHoeB4B2S+wsF390lnuopxGqehRg1z6YmJdlRqBIp3FelgWFqp5GyOpphEu6JudleSFRxw0xs1xHxDZqR+Tc7k3dQb2syy4ruO0A2tO6dBYb8pOy62/7PWZZfttHBXCCfhy7/PXCJj+sI8vfLwwQNwwU8j0PW0ZkHyUiytiRMDMzMzMzM2v6gIRY4kDs0H/wrv/s/3/8/ED/C4gfHWoMKlwF198)ASUVORK5CYII=%iVBORw0KG;)NSUhEUg?AIw?ABvCAM)Jztgg)GFBMVEX::3x+/pTdX74ffqXNjted3ypOf98vtYb73z?ACG0lEQVR4XsXWO5LDMAwEUQHg5/433nxNeVTu0gCpE/uZaPICE+v/xNU1e+THtH2blZ8zm2AqTxNdMKcZuwfmPKsDZubNNNBEJqBxwWRWI0z/eo/8MtEHw2n4RaBp/L3j5eMwYlYHTP96V+pZjTCchsP0l2/mo4mu3p1WfTTBzGN4Vg9MXHu0lG8cz6qgccLcRbn8F8G8/ZbT37u63/hqgBE0fpgzTXgvgvn107FbYNzrXaIlJhq1L36aEDCwfBxm6wxNI8yBxrDe4l4W5bPCOMv3+MEShvKJoAmaZYB5XMbcr8MEMCRTKWAUTflgrOUrUQ9n+XQ8NM0AFiyrmIbD8PJxGG/5fnikBFhvACNo+HrT1xsvH0gYKx+H0aDJysevPV4+/t8/J10GGEP56EsJ0KCS8vJxaV4+DoNowgADaEwnsAQNhSFl0LavPmV3Elzdc06T2wADLgX8BuDl8y/CAOVjMLx8HIaXj7eTl89/4U5RPgrDaZYBBpWPryO/FDgMpymUcEAjqPnv4OXzwehTOMDZ99LwKvDy8ZciLx+H4TRZjJPTPC9pCBhr+aZYQUP5QJwoTfA2cRq9qBwGHUh+n/HygT/VQsNhePk4DC8fSKRhvUUhLTQaxk+jz5a1fAFgOM3ywWia3D/kyFO+AWF4+TSMj2bq/9FIE09PuK98evdN5RMwVpqxxUdWmmWE0eWrOxg?GjEor01Z5o/iRsn1ao49rM)ASUVORK5CYII=!D%iVBORw0KG;)NSUhEUg?ALw?AByC)ADMwOSz?ACe0lEQVR4Xu3csY7kMAgG4Lz/86Wkp6ZAokDy6RTfodVsTDSaxPy7/uux9a0LZpkEb20YNzNVEWYmItr/hYiYWcS8Tcw2cKv8DTPtoxCzqFfC+wGXgCchYlGvgDfp9MBd/xNsIj7otL8XHwC8x14Sq04/Yine4tRvwEvP6ypqPXp+dgneY+nbaZPwHscOh7eww+HDjoL/uJ1m4D3scPjYFw8fawDxUWjw8LErFP7TB7/z0/jYFA8fB4+Il1iQh47UwF:fvrfLPV/t0WEj+52Ev5yjWc96y/MNNrdR/EX6yRZuxb3Z/Ge10lu1/MsPm9auZXFS09iL4n3DE+tLD5vQrQsPi+U1ArjJcELAv7Og/eeAT4+cor3r2lbVPk7Sk30ODeEt3R/QcZ7YXxWbKgB47kyPis2;y3ynhP8K00frw9lcbbD8bz3fiFJ0S8jvEyCb/wioy30nhZ+Kz/Mz3CPa8S0h7hI9+AtMeOeIb3cBRswGO7UviFfwO48Au/8Au/8OhfUgu/8EkzUhqvNfELr8h4+cV477EuGvSw0sPnPaz06BHbDOJHp/UrMf6TkYVfD9RagndkvCI/vpfSeAN+9yDbn0rjPdnfEPCC+JpWS/BUGJ8PGWldfH46XBifzy1oXXw+qkOF8dE1wr2Cful4uC7epQdu7OLimBRpRfzlmkDiw1kjNRFmmjehto9DLJZNeT2P1zfG66jKbKAjDzbGCkS8Iw/zxhJAfGyLiI9aj4iPRYg3ToQeEB87EyLepQcLnyzEwIceER8VEwT/6fu0JuKDzwSA/yifWGbhIxb+y2wWm9DDJnc+UtE7HwOfXOTB/KX1o37bppq3efkDT4lpi2pYKzI)ASUVORK5CYII=!