Q:

Understanding syntax of Generic methods

I am reading C# In Depth book and here is the example:
List<TOutput> ConvertAll<TOutput>(Converter<T, TOutput> converter)

I don't understand this part:  ConvertAll<TOutput>
When he is dissecting his example he also says: "The method's name is ConvertAll and it has a single param of  Converter<T, TOutput>
See still it doesn't say what/why is  inConvertAll<TOutput>

A:

I think that your confusion stems from the fact that the name TOutput appears earlier in the text of the program than its declaration.
Here is what is going on - recall that the syntax for defining a regular method is as follows:
return_type method_name ( param1_type param1, param2_type param2, ... )

Generic methods add angular brackets after the method name:
method_name <gnenric_type_param1, generic_type_param2, ...> ( param1_type param1, param2_type param2, ... )

So now your method looks like this:
return_type ConvertAll<TOutput> ( param1_type param1, param2_type param2, ... )

What's the return type? It's List<TOutput>. TOutput comes from the type arguments in angular brackets, but it is used in the return type, which is before the angular brackets:
List<TOutput> ConvertAll<TOutput> ( param1_type param1, param2_type param2, ... )

The rest of the declaration is simple: you have only one parameter, Converter<T, TOutput> converter, which uses the TOutput generic type parameter of the method, along with T, presumably a generic type parameter of the class. This shows you how a method of a generic class can add generic type parameters of its own to be used alongside the generic type parameters of the class in which the method is declared.

