我在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
我找到了这个功能的用途:用接口本身定义自定义异常类而不是在接口之外。这似乎有意义,因为自定义异常与将实现接口的类特别相关。
我的问题是双重的:
为什么这可能 - 我一直认为接口不能包含实现?
我是否会让自己陷入无法预料的麻烦呢?
如果这是主观事情之一,那么就这样 - 我会打个电话: - )
答案 0 :(得分:1)
为什么这可能 - 我一直认为接口不能包含实现?
在.NET中嵌套类和接口只是您应该在适当时使用的一种组织方式;类和实例本身不是一起实例化的,甚至不是与命名空间相关的。
将其视为Shared
字段或常量;把它放在那里如果它有意义去那里。
我是否会让自己陷入无法预料的麻烦呢?
意外?几乎绝对不是。有些人会发现它有点令人困惑,但是,这是主观的。它的行为与嵌套类或命名空间中的类没有任何不同。