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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.