0

My requirement is to Clone an array Object. This is the kind of code I am using:

        Array numbers = Array.CreateInstance(typeof(int), 10);
        index = 0;
        foreach (int x in numbers)
        {
            numbers.SetValue(index * index, index);
            index++;
        }
        Object numberClone = numbers.Clone();

Now, how do I cast the Object numberClone to Array of intergers?

8
  • At first glance, have you tried this: int[] arrayOfInt = (int[])numberClone; ? Commented Feb 19, 2013 at 9:12
  • Why don't just use ArrayList ? Commented Feb 19, 2013 at 9:13
  • Array numberClone = (Array)numbers.Clone(); Tried this? Commented Feb 19, 2013 at 9:14
  • 1
    @bytefire, I did just that! Thanks. Array numberClone = (int [])numberClone; worked! Commented Feb 19, 2013 at 9:20
  • So you already know at compile time that's an int[]? Why do you use CreateInstance at all then instead of something like this: var newNums = new List<int>(numbers); int[] newNumArray = newNums.ToArray();? Commented Feb 19, 2013 at 9:23

5 Answers 5

2
Array numbers = Array.CreateInstance(typeof(int), 10);
int index = 0;
foreach (int x in numbers)
{
    numbers.SetValue(index * index, index);
    index++;
}
Array numberClone = (Array)numbers.Clone();
Sign up to request clarification or add additional context in comments.

Comments

0

if you are using .net 3.5 this might help you

object[] objarr = new object[] {1,2,3 };
 int[] arr= objarr.Cast<int>().ToArray();

Comments

0
  Array numbers = Array.CreateInstance(typeof(int), 10);
           int index = 0;
            foreach (int x in numbers)
            {
                numbers.SetValue(index * index, index);
                index++;
            }
            Object numberClone = numbers.Clone();

            Array castNumbers = (Array)numberClone;

            foreach(int x in castNumbers)
            {

                Console.WriteLine(x);
            }

Comments

0

Why not setting the same value in the foreach?

like this

int[] numbers = new int[10]();
int[] numberClone = new int[10]();

foreach(var x in numbers)
{
nubmers[index*index] = index;
numberClone[index*index] = index;
}

Something like this i did this without VS so sorry if its wrong :P

Comments

0
Object numberClone = numbers.Clone();
var arr = numberClone as Array;
var listOfInt = arr.OfType<int>().Select(c => c).ToArray();

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.