A standalone generic method needs to have a placeholder type parameter, just like a generic class, which allows it to be included inside either a generic or non-generic class as needed:
public void GenericMethod<T>(T genericParameter) {}
The T type can be used inside the method body and defined when the method is called:
GenericMethod<string>("Hello World!");
However, if you want to declare a generic method inside a generic class, you don't need to specify a new T type:
public class SomeGenericCollection<T>
{
public void NonGenericMethod(T genericParameter) {}
}
When you call a non-generic method that uses a generic type parameter, there's no issue because the generic class has already taken care of assigning a concrete type:
SomeGenericCollection<int> highScores = new SomeGenericCollection
<int> ();
highScores.NonGenericMethod(35);
Generic methods can be...