2014-05-05 29 views
2

我已經在VB .NET 2010項目中編寫了一個接口定義。令我驚訝的是,我發現完全成熟的類可以在接口定義中定義。一個簡單的例子:爲什麼接口可能包含VB.NET中的類?

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. 我會讓自己陷入無法預料的麻煩嗎?

如果它的那些主觀的事情之一,就這樣吧 - 我會讓:-)

回答

1

呼叫爲什麼這是可能的 - 我一直以爲接口不能包含實現?

.NET中的嵌套類和接口只是一種適當組織的方式;類和實例本身不會一起實例化,甚至不會超出命名空間的範圍。

認爲它像一個Shared字段或常量;把它放在那裏,如果它有意義的話去那裏。

我會讓自己陷入無法預料的麻煩嗎?

Unforeseen?幾乎肯定不是。有些人可能會覺得有些困惑,但是,這是主觀的。它不會在命名空間中表現出與嵌套類或類不同的行爲。

相關問題