async static Task <t> someMethod()与static async之间有什么区别Task <t> someOtherMethod()

时间:2016-05-11 19:30:40

标签: c# asynchronous async-await

有人可以解释这两个实现之间的区别,并解释哪个是比其他

更好的选择

1 个答案:

答案 0 :(得分:4)

来自the C# language specification,第10.6节“方法”:

  

方法是实现可以的计算或操作的成员   由一个对象或类来执行。使用方法声明方法   方法-声明

     

方法声明
   method-header method-body

     

方法的头
   attributes opt method-modifiers opt partial opt return-type member-name type-parameter-list opt
  ( formal-parameter-list opt type-parameter-constraints-clauses opt

     

方法改性剂:
  方法改性剂
  方法修饰符 方法修饰符

     

方法改性剂:
  new
  public
  protected
  internal
  private
  static
  virtual
  sealed
  override
  abstract
  extern
  async

换句话说,所有这些修饰符都可以按任何顺序出现。该部分的其余部分指定了哪些修饰符组合是有效的(修饰符可能不会重复,最多可以提供staticvirtualoverride中的一个,但是它会分配对他们的订单毫无意义。因此,没有任何区别,可以使用您喜欢的任何内容(或者更恰当地说,代码库的其余部分已经确定的任何约定,如果有的话)。

请注意,partial 被视为method-modifier(但该部分稍后将其称为“修饰符”)。这意味着在任何合法修饰符之后必须显示static partial void Foo()是合法的,partial static void Foo()不合法。