int.Parse方法没有括号

gag*_*gro 0 c# methods parsing

为什么我可以在没有括号的情况下调用Parse方法,因为该方法有4个重载?

例如,在这种情况下:

string[] aTemp = Console.ReadLine().Split(' ');
int[] a = Array.ConvertAll(aTemp, int.Parse);
Run Code Online (Sandbox Code Playgroud)

dan*_*ana 5

签名ConvertAll实际上是这样的:

public static TOutput[] ConvertAll<TInput, TOutput>(
    TInput[] array,
    Converter<TInput,?TOutput> converter
)
Run Code Online (Sandbox Code Playgroud)

编译器可以推断出:

public static int[] ConvertAll<string, int>(
    string[] array,
    Converter<string,?int> converter
)
Run Code Online (Sandbox Code Playgroud)

从签名Int32.Parse:

public static int Parse(
    string s
)
Run Code Online (Sandbox Code Playgroud)

如果你想长篇大论写:

Converter<string, int> converter = new Converter<string, int>(Int32.Parse);
string[] aTemp = Console.ReadLine().Split(' ');
int[] a = Array.ConvertAll<string, int>(aTemp, converter);
Run Code Online (Sandbox Code Playgroud)

注意:Converter<TInput,?TOutput>实际上是一个委托,它接受一个类型的参数作为输入TInput并返回一个类型的值TOutput.