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