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.

    原文链接

  • 相关阅读:
    动态传参
    函数的介绍
    文件的操作
    send email with formatted table
    minimize and close window with customed winform
    python algorithm
    something important about docker
    book list
    which language is suitable for what to do
    Find Duplicate Items in list fast
  • 原文地址:https://www.cnblogs.com/OpenCoder/p/12259777.html
Copyright © 2011-2022 走看看