using System.Threading.Tasks;
public static async Task Main()
Console.WriteLine($"Number before method: {number}");
Console.WriteLine($"Number after method: {number}");
Console.WriteLine($"-----------------------------");
string message = "Hello world";
Console.WriteLine($"Message before method: {message}");
Console.WriteLine($"Message after method: {message}");
Console.WriteLine($"-----------------------------");
var wrapperClass = new WrapperClass { Number = 15 };
Console.WriteLine($"Number before method: {wrapperClass.Number}");
Console.WriteLine($"Number after method: {wrapperClass.Number}");
Console.WriteLine($"-----------------------------");
var wrapperStruct = new WrapperStruct { Number = 15 };
Console.WriteLine($"Number before method: {wrapperStruct.Number}");
Console.WriteLine($"Number after method: {wrapperStruct.Number}");
Console.WriteLine($"-----------------------------");
public static void Func1(int number)
Console.WriteLine($"Inside Func1: {number}");
Console.WriteLine($"Number inside Func1: {number}");
public static void Func2(WrapperClass number)
Console.WriteLine($"Inside Func2: {number.Number}");
Console.WriteLine($"Number inside Func2: {number.Number}");
public static void Func3(WrapperStruct number)
Console.WriteLine($"Inside Func3: {number.Number}");
Console.WriteLine($"Number inside Func3: {number.Number}");
public static void Func4(string message)
Console.WriteLine($"Inside Func4: {message}");
Console.WriteLine($"Number inside Func4: {message}");
public class WrapperClass
public int Number { get; set; }
public struct WrapperStruct
public int Number { get; set; }