C# Iasyncresult-为什么它不仅仅是对象,为什么它是接口?

C# Iasyncresult-为什么它不仅仅是对象,为什么它是接口?,c#,iasyncresult,C#,Iasyncresult,我只是不明白为什么IAsyncResult是一个接口而不是简单的对象。正如我正确地记得的,接口只包含方法名而没有实现,所以我看不出它在这里是如何使用的,因为我没有派生它的任何类,也没有重写它的方法?我只是有点困惑。谢谢这样,结果可以是任何类型的对象,它实现了IAsyncResult接口 你说得对,接口只包含方法/属性,没有实现。 在这种情况下,可以保证AsyncResult对象包含“异步框架”所需的方法 IAsyncResult包含四个属性: 异步状态(对象) AsyncWaitHandle(

我只是不明白为什么IAsyncResult是一个接口而不是简单的对象。正如我正确地记得的,接口只包含方法名而没有实现,所以我看不出它在这里是如何使用的,因为我没有派生它的任何类,也没有重写它的方法?我只是有点困惑。谢谢这样,结果可以是任何类型的对象,它实现了IAsyncResult接口

你说得对,接口只包含方法/属性,没有实现。 在这种情况下,可以保证AsyncResult对象包含“异步框架”所需的方法

IAsyncResult包含四个属性:

  • 异步状态(对象)
  • AsyncWaitHandle(WaitHandle)
  • 同步完成(布尔)
  • IsCompleted(布尔值)

使用异步方法时,这些属性只是必需的。如果它是一个对象,我想您的灵活性会降低。

像这样,结果可以是实现IAsyncResult接口的任何类型的对象

你说得对,接口只包含方法/属性,没有实现。 在这种情况下,可以保证AsyncResult对象包含“异步框架”所需的方法

IAsyncResult包含四个属性:

  • 异步状态(对象)
  • AsyncWaitHandle(WaitHandle)
  • 同步完成(布尔)
  • IsCompleted(布尔值)

使用异步方法时,这些属性只是必需的。如果它是一个对象,我想你的灵活性会降低。

如果它只是一个对象,它可以是任何东西-你不能依赖于存在的某些属性和/或方法,就像你知道你将得到一个实现接口的对象时一样
IAsyncResult

由于要返回的对象必须实现相关接口,因此可以依赖以下事实:属性
异步状态
异步WaitHandle
同步完成
已完成


如果你只有一个对象,你得到了一个
int
-你如何获得你需要的属性???

如果它只是一个对象,它可以是任何东西-你不能依赖于存在的某些属性和/或方法,当您知道将得到一个实现接口的对象时,您可以这样做
IAsyncResult

由于要返回的对象必须实现相关接口,因此可以依赖以下事实:属性
异步状态
异步WaitHandle
同步完成
已完成

如果您只有一个对象,并且返回了一个
int
-您将如何获得所需的属性???

,因为“ASyncResult”本身并不是具体的

因为C#只允许单一的固有性,通过将其作为一个接口,您可以在您选择的任何对象类型上实现它

例如,如果我的方法返回类型Foo,我可以通过创建一个子类来为我的应用程序创建一个异步返回类型

FooAsync : Foo, IAsyncResult  
并简单地将其转换为编写代码来提取值

因为“异步结果”本身并不具体

因为C#只允许单一的固有性,通过将其作为一个接口,您可以在您选择的任何对象类型上实现它

例如,如果我的方法返回类型Foo,我可以通过创建一个子类来为我的应用程序创建一个异步返回类型

FooAsync : Foo, IAsyncResult  
并简单地将其转换为编写代码来提取值

可能的重复可能的重复