.NET Fiddle

CSharp · Console

/Program.cs

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

public class WrapperClass
{
	public int Number { get; set; }	
}

public struct WrapperStruct
{
	public int Number { get; set; }	
}
;