为什么接口可以在VB .NET中包含类?

时间:2014-05-05 02:49:45

标签: .net vb.net vb.net-2010

我在VB .NET 2010项目中编写了一个接口定义。令我惊讶的是,我发现可以在接口定义中定义完全成熟的类。一个简单的例子:

Friend Interface IProcessor

    Class InvalidDataException
        Inherits System.Exception

        Public Sub New()
            MyBase.New("Invalid data.")
        End Sub

    End Class

    ReadOnly Property State As System.String
    Sub Process(data As System.Byte())

End Interface

我找到了这个功能的用途:用接口本身定义自定义异常类而不是在接口之外。这似乎有意义,因为自定义异常与将实现接口的类特别相关。

我的问题是双重的:

  1. 为什么这可能 - 我一直认为接口不能包含实现?

  2. 我是否会让自己陷入无法预料的麻烦呢?

  3. 如果这是主观事情之一,那么就这样 - 我会打个电话: - )

1 个答案:

答案 0 :(得分:1)

  

为什么这可能 - 我一直认为接口不能包含实现?

在.NET中嵌套类和接口只是您应该在适当时使用的一种组织方式;类和实例本身不是一起实例化的,甚至不是与命名空间相关的。

将其视为Shared字段或常量;把它放在那里如果它有意义去那里。

  

我是否会让自己陷入无法预料的麻烦呢?

意外?几乎绝对不是。有些人会发现它有点令人困惑,但是,这是主观的。它的行为与嵌套类或命名空间中的类没有任何不同。