2011-09-28 81 views

回答

1

它們是接口。一個接口可以確保對象具有某些方法,而不管它是什麼類。當你有需要幾個常用方法的代碼時,它們非常有用,但不需要知道該類的所有細節。

Object(),System.Collections.ArrayListSystem.Collections.Queue全部實施IEnumerable。如果您有一個要求輸入IEnumerable的函數,則可以將任何這些類的對象傳遞給該函數,並且該函數確信該對象實現了所有IEnumerable成員。

在控制檯應用程序中嘗試以下代碼。這三個不同的等級都可以接受,以傳遞給PrintAll(items)

Public Sub PrintAll(items As IEnumerable) 
    For Each item In items 
     Console.WriteLine(item) 
    Next 
End Sub 

Public Sub Main() 
    Dim objects As Object() = {1, 2, 3} 
    Dim list As New ArrayList({4, 5, 6}) 
    Dim queue As New Queue({7, 8, 9}) 
    PrintAll(objects) 
    PrintAll(list) 
    PrintAll(queue) 
    Console.ReadLine() 
End Sub 
0

這些是接口。 「我」通常表示這一點。這些包含任何實現特定接口的類必須實現的方法契約。換句話說,如果你有一個實現IEnumerable的類,那麼你需要在你的類中包含在接口中的方法。接口(和麪向對象編程)可以變得非常深入,但這是一個廣泛的解釋,希望能夠足夠簡單地理解。

請讓我知道,如果我可以澄清。

0

我首先看一下interface這個想法,因爲它們都是接口,這是naming conventions的證明。這需要一個潛在的冗長的答案來傳遞完整的理解,但是想法是接口提供了方法的簽名,以便繼承類知道要實現哪些方法。我意識到這是很多潛在的陌生概念,但將界面視爲配方。你被賦予創建一些東西的指導。麪粉1克,糖1噸等。如果你想製作這個產品,你必須確保你能滿足要求,把它們放在一起,你就有了成品。對不起,如果這是一個可怕的比喻,但希望它有幫助。 就你而言,微軟提供的接口名稱給出了他們想要表示的內容的一個小概念。例如,如果您繼承IComparer,則最終會生成一個可以比較兩個對象的類。重要的是要注意,對象的類型不一定是由接口定義的。這取決於類型的執行情況。只有界面提供了「框架」。 祝你好運!

0

ICompare是用於比較的東西。與排序/比較(顯然)相關的類可以實現這一點。

IEnumerable用於收集,列表,LINQ的東西。

相關問題