TheDeveloperBlog.com

Home | Contact Us

C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML

<< Back to C-SHARP

C# CopyTo String Method: Put Chars in Array

Invoke the CopyTo method on the string type to copy a range of characters into a char array.
CopyTo. This method takes string characters and puts them into an array. It copies a group of characters from one source string into a character array of a certain size.Stringsstring.Copy
Optimized code. This .NET Framework method provides optimized low-level code. When we need to copy chars from a string, CopyTo is a good solution.
To start, CopyTo() must be called on an instance of a string object. String objects in C# can be represented by string literals, meaning "Literal".CopyTo() would be useful as well.String Literal

New: In this example, please notice how the char[] variable is allocated before CopyTo is invoked.

Char Array

Void: CopyTo() is void, and returns nothing. The char array in the program instead has its characters changed internally in CopyTo.

Note: Arrays are indexed by their offsets. The fourth character where the CopyTo method begins copying is the letter "N".

Then: That character and the two following characters are copied into the char[] buffer and the buffer's values are printed to the screen.

Console
C# program that uses CopyTo using System; class Program { static void Main() { // Declare a string constant and an output array. string value1 = "The Dev Codes"; char[] array1 = new char[3]; // Copy the fifth, sixth, and seventh characters to the array. value1.CopyTo(4, array1, 0, 3); // Output the array we copied to. Console.WriteLine("--- Destination array ---"); Console.WriteLine(array1.Length); Console.WriteLine(array1); } } Output --- Destination array --- 3 Net
A benchmark. I wanted to know whether using CopyTo is faster than a for-loop on a short string. Should we use CopyTo in performance-critical methods?

Important: For longer strings, the benchmark would need to be adjusted. Careful testing is needed.

Version 1: Copy chars from a string into a char array with CopyTo. Only 4 chars are copied.

Version 2: Copy those same 4 chars into the char array with a for-loop. Use an index expression to assign elements.

Result: I found that the for-loop is faster. This of course depends on your system and other factors.

C# program that benchmarks CopyTo, for-loop using System; using System.Diagnostics; class Program { const int _max = 100000000; static void Main() { char[] values = new char[100]; // Version 1: use CopyTo. var s1 = Stopwatch.StartNew(); for (int i = 0; i < _max; i++) { "1234".CopyTo(0, values, 0, 4); } s1.Stop(); // Version 2: use for-loop. var s2 = Stopwatch.StartNew(); for (int i = 0; i < _max; i++) { for (int j = 0; j < "1234".Length; j++) // [For-loop] { values[j] = "1234"[j]; } } s2.Stop(); Console.WriteLine(((double)(s1.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns")); Console.WriteLine(((double)(s2.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns")); Console.Read(); } } Output 11.44 ns, CopyTo 8.64 ns, For-loop
Internals. In the .NET Framework, the CopyTo instance method on string is contained in an unsafe context, meaning it can access pointers directly.

However: Using CopyTo is reliable because it has been extensively tested. The unsafe code is not your responsibility.

Wstrcpy: The CopyTo method internally calls into wstrcpy, which is a heavily optimized and unrolled loop. It copies characters quickly.

Substring. In most .NET programs, the CopyTo method is not necessary. Instead, your programs will often use Substring to copy one range of characters to another.Substring

But: CopyTo() along with ToCharArray can be used as optimizations. And CopyTo can help when char arrays are needed by other methods.

ToCharArray
A summary. Copy() allows you to copy ranges of characters from a source string into target arrays. It is often not needed, but can replace a for-loop to copy chars.Array
© TheDeveloperBlog.com
The Dev Codes

Related Links:


Related Links

Adjectives Ado Ai Android Angular Antonyms Apache Articles Asp Autocad Automata Aws Azure Basic Binary Bitcoin Blockchain C Cassandra Change Coa Computer Control Cpp Create Creating C-Sharp Cyber Daa Data Dbms Deletion Devops Difference Discrete Es6 Ethical Examples Features Firebase Flutter Fs Git Go Hbase History Hive Hiveql How Html Idioms Insertion Installing Ios Java Joomla Js Kafka Kali Laravel Logical Machine Matlab Matrix Mongodb Mysql One Opencv Oracle Ordering Os Pandas Php Pig Pl Postgresql Powershell Prepositions Program Python React Ruby Scala Selecting Selenium Sentence Seo Sharepoint Software Spellings Spotting Spring Sql Sqlite Sqoop Svn Swift Synonyms Talend Testng Types Uml Unity Vbnet Verbal Webdriver What Wpf