Это необязательные аргументы. Необязательные аргументы позволяют просто пропустить значения аргументов, а именованные аргументы позволяют вводить их в любом порядке.
public int Test(int a, int b = 1, int c = 2, int d = 3) {
return a + b + c + d;
}
public string Hello(string name = "World") {
return "Hello, " + name + "!";
}
public void Main() {
Test(0); //Test(0,1,2,3)
Test(0, c: 5); //Test(0,1,5,3)
Test(d: 5, a: 0); //Test(0,1,2,5)
Hello(); //Hello("World");
}