C# 匿名方法-3种不同的方法-异步
我不确定该在标题中写什么,它们可能不都是匿名方法,但下面是: 假设我们有这个异步函数:C# 匿名方法-3种不同的方法-异步,c#,asp.net-core,methods,anonymous-function,blazor,C#,Asp.net Core,Methods,Anonymous Function,Blazor,我不确定该在标题中写什么,它们可能不都是匿名方法,但下面是: 假设我们有这个异步函数: public async Task Delete(){ //something } 我正在使用Blazor服务器端,我很好奇下面四种调用函数的方法。假设它们在div标签中 onclick=“@Delete” onclick=“@(()=>Delete(id))” onclick=“@(异步()=>等待删除(id))” onclick=“@(e=>Delete(person.Id)) 我不确定1对Bl
public async Task Delete(){
//something
}
我正在使用Blazor服务器端,我很好奇下面四种调用函数的方法。假设它们在div标签中
onclick=“@Delete”
onclick=“@(()=>Delete(id))”
onclick=“@(异步()=>等待删除(id))”
onclick=“@(e=>Delete(person.Id))
如果需要传入参数,可以使用2和3,但我以前从未使用过异步部分,只在以前的文章中看到过。是否还需要说
“async()=>“
?在Blazor的早期版本中,您需要使用选项3,因为不支持异步
功能。如果您错过了wait
,Blazor无法知道该方法已完成,因此您需要手动调用statehaschange
,以便在需要时重新呈现组件
但是,现在Blazor确实支持异步方法,因此您可以坚持使用选项1,但需要注意的是,您需要该方法返回Task
,而不是void
所以你需要这样的东西:
public async Task Delete(){
//something
}
在布拉佐:
onclick="@Delete"
到3:使用
wait
调用某个对象时,假定您的方法是async
。所以是的,当你使用另一个的时候,你需要一个。好的接球。使psudo代码有点太快了谢谢。(哦,注释不喜欢换行符)当需要发送参数时,您建议使用2/3还是4版本?关于4,是否需要在“e”之前加上“async”或在“Delete”或“wait”之前加上“await”?感觉我在这里混淆了不同的概念。如果你有时间的话,我想听听/确认一下1、2/3和4的概念/背景是什么。我对它的理解是:1:??2:非异步匿名方法3:异步匿名方法4:lambda表达式-更好/更糟/为什么?对于参数,只需像传递任何方法@Delete(value1,value2)
一样传递它们,实际上对我不起作用。我有这样一个:@{string textParam=“Texty”}单击方法如下:“private async Task ChangeLang(string incParam)”我得到了编译器错误:“参数2:无法从'System.Threading.Tasks.Task'转换为'Microsoft.AspNetCore.Components.EventCallback'”。请查看和EventCallback
委托。对不起,我现在不在Blazor兼容的IDE附近check@Track,我在参数方面也遇到了这个问题。在这种情况下,选项2和3(异步)似乎是可行的。希望你背上没有皮肤脱落。