This defines a generic method, which is one form of generics, which were added to C# in C# 2.0.
The method sig should be:
static void Foo<T>(params T[] x)
{ // ...
This lets you pass any number of arguments of any (specific) type into the method Foo, and it acts on that array of arguments. It's similar to how generic types work, except scoped just to the method. The <T>
specifies the type of the argument being passed into the method, so you can call this like:
Foo<MyClass>(myClassInstance, myClassInstance2, mySubclassInstance);