• 0

[C#] Array Resizing


Question

How do I resize an array without losing the contents of the array?

  Quote
string[] arr;

...

arr = new string[5];

arr[4] = "Data";

In the above example, whenever I use "arr = new string[5];" it completely wipes the previous array data and the only data that exists is arr[4]. How do I resize an array without losing the data?

Thanks in advance.

Link to comment
https://www.neowin.net/forum/topic/254878-c-array-resizing/
Share on other sites

15 answers to this question

Recommended Posts

  • 0

You have discovered the reason to have the Arraylist!! It's a dynamically growing data structure. In this case, I think the arraylist would be your best bet, and you won't see much performance degradation.

  • 0

Hmmm, like many said i think there's no ultimate solution besides moving to ArrayList, if you're pretty sure your collection won't grow to extreme amounts then you can probably just make a method that will merge existing data from an array into a new sized array, very easily done.

ArrayList do have a performance hit as mentioned, furthermore, you have to do type-casting and that's another issue, but i think you shouldn't need to worry too much about these factors, as the framework handles it pretty well.

  • 0
  Blackout said:
So how would I go about converting an Arraylist to a string[]?

585068903[/snapback]

  ArrayList al = new ArrayList;

  //
  // ... Fill array list with string here
  //     such as al.Add("hello //

  string[] s = new string[al.Count];
  for (int i=0; i < al.Count; i++)
      s[i] = (string)al[i];

  • 0
  Blackout said:
So how would I go about converting an Arraylist to a string[]?

585068903[/snapback]

You mean the other way arround?

ArrayList stringCollection = new ArrayList();

stringCollection.add(yourString);

The good thing with using ArrayList is you don't have to specify the size, the size is dynamically changed accordingly during run-time as the list becomes filled with Objects.

  • 0

You could also use the CopyTo method to copy the contents in one shot.

ArrayList al = new ArrayList();

// ... add strings

string[] s = new string[al.Count];
al.CopyTo(s, 0);

Note that if your ArrayList contains things other than strings, you'll get an exception. That's really the only downside to using the ArrayList. It's not typesafe. You could create your own strongly typed collection by making a class that inherits from CollectionBase. OR, you could use the StringCollection in System.Collections.Specialized(saved the best for last).

  • 0
  weenur said:
You could also use the CopyTo method to copy the contents in one shot.

ArrayList al = new ArrayList();

// ... add strings

string[] s = new string[al.Count];
al.CopyTo(s, 0);

Note that if your ArrayList contains things other than strings, you'll get an exception. That's really the only downside to using the ArrayList. It's not typesafe. You could create your own strongly typed collection by making a class that inherits from CollectionBase. OR, you could use the StringCollection in System.Collections.Specialized(saved the best for last).

585070088[/snapback]

And that's why I can't wait for generics (.NET 2.0).

ArrayList<string> s = new ArrayList<string>;

:D

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Adobe releases all-new Photoshop app for Android devices by Pradeep Viswanathan Early this year, Adobe released an all-new Photoshop app for iOS devices. Designed from the ground up for smartphones, the app allows users to easily add, remove, adjust, and combine content, as well as access free Adobe Stock assets to create new visuals. Today, Adobe announced a similar, brand-new Photoshop app for Android devices, currently in beta. It’s important to note that this Android version is not intended to replace the desktop version of Photoshop. Instead, it offers access to select powerful Photoshop features—including layering, masking, and the new Generative Fill—within an easy-to-use mobile interface. During the beta phase, the following features are available to all users: Following the beta phase, users will need a new Photoshop Mobile & Web plan to access the premium features. The premium features list includes the ability to remove objects by brushing over them with the Remove Tool, the ability to use Clone Stamp to hide unwanted objects by cloning areas of an image, the ability to fill portions of an image with content sampled from other parts of the image with Content-Aware Fill, the ability to export using additional file formats (PSD, TIF, JPG, PNG), and more. You can download the Adobe Photoshop app from the Google Play Store if your device is running Android 11 or later and has at least 6GB of RAM (8GB or more is recommended for optimal performance).
    • And what about all the toxic waste that "clean" nuclear energy produces?
    • Plasma is beautiful, but my workload is unlikely to ever run on linux ... Cubase 14 with 5 or 6 dozen instances of Kontakt 8. Sigh.
    • Hey everyone! Just curious what your favorite browser is and why? Personally, I prefer using Chrome because it is simple and smooth to use. Would love to hear what everyone else is using and if there's something better I should try!
    • I'm Sam, 20, currently studying IT and passionate about all things tech and music. I found Neowin while browsing for community forums, and I’m excited to be here, connect with others, and maybe even learn something new along the way. Looking forward to chatting with you all!
  • Recent Achievements

    • Conversation Starter
      DarkShrunken earned a badge
      Conversation Starter
    • One Month Later
      jrromero17 earned a badge
      One Month Later
    • Week One Done
      jrromero17 earned a badge
      Week One Done
    • Conversation Starter
      johnwin1 earned a badge
      Conversation Starter
    • One Month Later
      Marwin earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      246
    2. 2
      snowy owl
      156
    3. 3
      ATLien_0
      142
    4. 4
      +FloatingFatMan
      138
    5. 5
      Xenon
      127
  • Tell a friend

    Love Neowin? Tell a friend!