That means that the following code, note the parameter names, successfully compiles:
// Definition in file1.cs
partial void Foo(string foo);
// Implementation in file2.cs
partial void Foo(string bar)
{
// method body
}
Just as it is the case with interfaces:
public interface IFoo
{
void Bar(string baz);
}
public class Foo : IFoo
{
public void Bar(string qux)
{
}
}
It's parameter order that matters. You can choose whatever valid name you want in the implementation.
For the "type parameter names" part, that part specifically is about generics (T versus V), where again the order matters, not the name:
// Definition in file1.cs
partial void Foo<T>(string foo);
// Implementation in file2.cs
partial void Foo<V>(string bar)
{
// method body
}