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)
签名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.
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |