Use unsafe method to clone array : Unsafe Code « Language Basics « C# / C Sharp






Use unsafe method to clone array

  

public struct MyValue
{
    public int id;
    public MyValue(int id) { this.id = id; }
}
class ClassAddressApp
{
    unsafe public static MyValue[] CloneMyValues(MyValue[] box)
    {
        MyValue[] ret = new MyValue[box.Length];
        fixed (MyValue* src = box, dest = ret)
        {
            MyValue* pSrc = src;
            MyValue* pDest = dest;
            for (int index = 0; index < box.Length; index++)
            {
                *pDest = *pSrc;
                pSrc++;
                pDest++;
            }
        }
        return ret;
    }
   
    static void Main(string[] args)
    {
        MyValue[] box = new MyValue[2];
        box[0] =  new MyValue(1);
        box[1] = new MyValue(2);
   
        MyValue[] bag = CloneMyValues(box);
        foreach (MyValue i in bag)
        {
            Console.WriteLine(i.id);
        }
    }
}

   
  








Related examples in the same category

1.int pointer variable
2.Unsafe Methods
3.Accessing Structure Members with a Pointer
4.Supported sizeof() Types
5.Fixing Managed Data in Memory
6.Allocating Memory from the Stack
7.Get variable address in unsafe mode
8.Unsafe code: get data type size
9.Address and size of pointer object
10.Using the unsafe keyword
11.object pointer
12.unsafe and fixed block
13.mark method as unsafe
14.Use unsage code to swap two integers
15.Pointer for struct
16.Compare pointer