C#C
C#2y ago
Surihia

A small help in understanding structs:

I am learning how to use structs and have a question. for this question I decided to write a small test program by using some structs.

Inside Program.cs
c#
using System;
using static TestStuff.Class2;

namespace TestStuff
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var testHoldStruct = new TestHold();
            var testHoldStruct2 = new TestHold2();

            testHoldStruct.val1 = 100;
            testHoldStruct.val2 = 500;

            testHoldStruct2.val2_1 = 1000;
            testHoldStruct2.val2_2 = 5000;

            Class1.ProcessTest(testHoldStruct, testHoldStruct2);

            Console.WriteLine("");
            Console.WriteLine("Done");
            Console.ReadLine();
        }
    }
}



Inside Class1.cs file:
c#
using System;
using static TestStuff.Class2;

namespace TestStuff
{
    internal class Class1
    {
        public static void ProcessTest(TestHold testHoldStruct, TestHold2 testHold2Struct)
        {
            Console.WriteLine(testHoldStruct.val1);
            Console.WriteLine(testHoldStruct.val2);

            Console.WriteLine(testHold2Struct.val2_1);
            Console.WriteLine(testHold2Struct.val2_2);
        }
    }
}


Inside Class2.cs file:
c#
namespace TestStuff
{
    internal class Class2
    {
        public struct TestHold
        {
            public int val1;
            public int val2;
        }

        public struct TestHold2
        {
            public int val2_1;
            public int val2_2;
        }
    }
}


Am I correct in assuming that when I am calling ProcessTest method from Program.cs file, a copy of the struct object is created in memory when Class1 is being processed ? I assume that if I use a class instead of a struct for ProcessTest method, I would only be passing it as a reference to the class object and in that case, a copy of the object isn't created when Class1 is being processed
Was this page helpful?