Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将System.Action作为返回类型的目的是什么?_C# - Fatal编程技术网

C# 将System.Action作为返回类型的目的是什么?

C# 将System.Action作为返回类型的目的是什么?,c#,C#,我正在使用的代码如下所示: 之前: MessagingCenter.Subscribe<CardsTabViewModel, Templates.Button>(this, "DeleteQuiz", async (s, btn) => { var canContinue = await DisplayAlert("Delete Quiz", "Do you want to delete the results for Quiz " + (int)btn.TapComma

我正在使用的代码如下所示:

之前:

MessagingCenter.Subscribe<CardsTabViewModel, Templates.Button>(this, "DeleteQuiz", async (s, btn) =>
{
   var canContinue = await DisplayAlert("Delete Quiz", "Do you want to delete the results for Quiz " + (int)btn.TapCommandParam, "OK", "Cancel");
   if (canContinue == false)
      return;
   App.DB.DeleteQuizHistory((int)btn.TapCommandParam);
   AddQuizDetails();
});
MessagingCenter.Subscribe(此“删除测验”,异步,btn)=>
{
var canContinue=wait DisplayAlert(“删除测验”,“是否要删除测验结果”+(int)btn.TapCommandParam,“确定”,“取消”);
如果(canContinue==false)
返回;
App.DB.deletequizhitory((int)btn.TapCommandParam);
AddQuizDetails();
});
之后:    

MessagingCenter.Subscribe(这个“deletequick”,NewMethod());
    }
private System.Action NewMethod()
{
返回异步(s,btn)=>
   {
var canContinue=wait DisplayAlert(“删除测验”,“是否要删除测验结果”+(int)btn.TapCommandParam,“确定”,“取消”);
如果(canContinue==false)
返回;
App.DB.deletequizhitory((int)btn.TapCommandParam);
AddQuizDetails();
    };
}

有人能给我解释一下为什么开发人员会使用System.Action作为返回类型吗。我以前从未见过System.Action,我想尝试了解它的功能。

System.Action
只是一个带有
void
返回类型的委托,这意味着您可以在返回时像调用函数一样调用该动作,或者使用它创建void类型的委托,而无需显式定义

下面是一个示例,说明如何使用它:

public class SomeClass {
    public static void CallMe() {
        Console.WriteLine("Hello!");
    }

    public Action GetCallMe() { 
        return CallMe;
    }
}

...

private void Main(string[] args) {
    var classInstance = new SomeClass();
    Action a = classInstance.GetCallMe();
    a();
}


系统。Action
只是一个返回类型为void的委托,这意味着您可以像调用函数一样在返回时调用Action,或者使用它创建void类型的委托,而无需显式定义

下面是一个示例,说明如何使用它:

public class SomeClass {
    public static void CallMe() {
        Console.WriteLine("Hello!");
    }

    public Action GetCallMe() { 
        return CallMe;
    }
}

...

private void Main(string[] args) {
    var classInstance = new SomeClass();
    Action a = classInstance.GetCallMe();
    a();
}


新方法的签名有问题。它应该是
private System.Func NewMethod()
,这样就可以像这样等待生成的任务:
wait NewMethod()(arg1,arg2)
现在任务被触发并被遗忘。
NewMethod
的签名有问题。它应该是
private System.Func NewMethod()
,这样就可以像这样等待生成的任务:
wait NewMethod()(arg1,arg2)现在任务已启动并被遗忘。