zoukankan      html  css  js  c++  java
  • 为什么C#接口中不能声明async异步函数(转载)

    Unable to declare Interface “ async Task<myObject> MyMethod(Object myObj); ”


    I'm unable to declare

    interface IMyInterface
    {
       async Task<myObject> MyMethod(Object myObj);
    }

    The compiler tells me:

    • The modifier async isn't valid for this item
    • The async modifier can only be used for methods that have a body

    Is this something that should be implemented, or does the nature of async & await prohibit this from ever occurring?

    答1


    Whether a method is implemented using async/await or not is an implementation detail. How the method should behave is a contract detail, which should be specified in the normal way.
    Note that if you make the method return a Task or a Task<T>, it's more obvious that it's meant to be asynchronous, and will probably be hard to implement without being asynchronous.

    From How to force async child overrides in C# 5.0

    答2


    Whether or not your implementation is async, has no relevance to your interface. In other words, the interface cannot specify that a given method must be implemented in an asynchronous way.
    Just take async out of your interface and it will compile; however, there is no way to enforce asynchronous implementation just by specifying an interface.

    原文链接

  • 相关阅读:
    CSS——实现图像远距离翻转效果
    《精通CSS》一个下拉菜单的例子
    将博客搬至CSDN
    44个Java代码性能优化总结
    QRCode 二维码生成
    Linux命令
    spring
    ajax 学习总结
    Servlet+Ajax实现搜索框智能提示代码
    搜索框智能提示
  • 原文地址:https://www.cnblogs.com/OpenCoder/p/12259777.html
Copyright © 2011-2022 走看看