public static void t2() { MyArrayStruct myStruct = new MyArrayStruct(); myStruct.flag = false; myStruct.vals = new int[3]; myStruct.vals[0] = 1; myStruct.vals[1] = 4; myStruct.vals[2] = 9; TestArrayInStruct(ref myStruct); Console.WriteLine("\n------t2--------:"); Console.WriteLine(myStruct.flag); Console.WriteLine("{0} {1} {2}", myStruct.vals[0], myStruct.vals[1], myStruct.vals[2]); }
public static void Main() { // Structure with a pointer to another structure. MyPerson personName; personName.first = "Mark"; personName.last = "Lee"; MyPerson2 personAll; personAll.age = 30; IntPtr buffer = Marshal.AllocCoTaskMem(Marshal.SizeOf(personName)); Marshal.StructureToPtr(personName, buffer, false); personAll.person = buffer; Console.WriteLine("\nPerson before call:"); Console.WriteLine("first = {0}, last = {1}, age = {2}", personName.first, personName.last, personAll.age); int res = LibWrap.TestStructInStruct(ref personAll); MyPerson personRes = (MyPerson)Marshal.PtrToStructure(personAll.person, typeof(MyPerson)); Marshal.FreeCoTaskMem(buffer); Console.WriteLine("Person after call:"); Console.WriteLine("first = {0}, last = {1}, age = {2}", personRes.first, personRes.last, personAll.age); // Structure with an embedded structure. MyPerson3 person3 = new MyPerson3(); person3.person.first = "John"; person3.person.last = "Evans"; person3.age = 27; LibWrap.TestStructInStruct3(person3); // Structure with an embedded array. MyArrayStruct myStruct = new MyArrayStruct(); myStruct.flag = false; myStruct.vals = new int[3]; myStruct.vals[0] = 1; myStruct.vals[1] = 4; myStruct.vals[2] = 9; Console.WriteLine("\nStructure with array before call:"); Console.WriteLine(myStruct.flag); Console.WriteLine("{0} {1} {2}", myStruct.vals[0], myStruct.vals[1], myStruct.vals[2]); LibWrap.TestArrayInStruct(ref myStruct); Console.WriteLine("\nStructure with array after call:"); Console.WriteLine(myStruct.flag); Console.WriteLine("{0} {1} {2}", myStruct.vals[0], myStruct.vals[1], myStruct.vals[2]); }
public static extern int TestArrayInStruct(ref MyArrayStruct myStruct);