带参数的方法

新手10975759

我想在这样的参数中传递一个带有参数的方法。但它仍然出错,我不知道该怎么办。

void WriteInScreen(string text){
    Console.WriteLine(text);
}
void WriteInScreen10Times(string text){
    for (int i = 1; i <= 10; i++){
        Console.WriteLine(text);
    }
}
void CallWriteInScreen(Action Method) {
    Method();
}
void StartCall(){
    //Error: Argument 2: Can't not convert from void to System.Action
    CallWriteInScreen(WriteInScreen("Hello!"));
    CallWriteInScreen(WriteInScreen10Time("Hi!"));
}

这只是我的测试代码,我需要解决这个问题才能继续开发我的程序。

Damien_The_Unbeliever

CallWriteToScreen只接受一个不接受任何参数并且不产生结果的委托(又名 an Action)。不确定是否要创建一系列CallWriteToScreen接受参数化Actions方法

void CallWriteInScreen(Action Method) {
    Method();
}
void CallWriteInScreen<T1>(Action<T1> Method, T1 arg1) {
    Method(arg1);
}
void CallWriteInScreen<T1, T2>(Action<T1, T2> Method, T1 arg1, T2 arg2) {
    Method(arg1, arg2);
}
void StartCall(){
    CallWriteInScreen(WriteInScreen, "Hello!");
    CallWriteInScreen(WriteInScreen10Time, "Hi!");
}

或者只是想包装最终的方法调用:

void StartCall(){
    CallWriteInScreen(() => WriteInScreen("Hello!"));
    CallWriteInScreen(() => WriteInScreen10Time("Hi!"));
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章