2017-02-24 20 views
-2

我想爲我的方法Pairwise定義一個有效的輸入。 Pairwise接受一個I​​Enumerable參數,我無法弄清楚究竟是什麼。我已經嘗試了很多東西,但永遠不能真正到達那裏。C#:具有IEnumerable <Type>作爲參數的方法。什麼是有效的輸入?

public delegate void PairwiseDel(Type left, Type right); 

public static void Pairwise(IEnumerable<Type> col, PairwiseDel del) 
{ 
    // stuff happens here which passes pairs from col to del 
} 

有人可以告訴並說明我的方法有效的輸入是什麼?

+1

是的,這是學校裏的功課,但是你最好不要讓我的家庭作業。離得很遠。這是我陷入困境的一小步。 – Nulle

+2

您可以傳遞任何實現IEnumerable 的類的對象,例如List 。最好先閱讀面向對象編程概念,接口和泛型。 –

+0

類型是在FCL中定義的類,因此IEnumerable myTypes = new List ();可以作爲有效參數傳遞。不明白你想要達到什麼目的。 –

回答

0

這將是一個有效的輸入:

var collection = new List<Type>(); 
collection.Add(typeof(string)); 
collection.Add(typeof(int)); 

PairWise(collection, YourDelegateHere); 
+0

我現在明白了。字面意思是指字符串,int,long等關鍵字。我認爲這是一個抽象的東西,我能夠通過幾乎所有東西 – Nulle

1

IEnumerable<T>是.NET庫中一個非常重要的接口。它代表描述T類型元素序列的抽象。

這個通用的接口有多個實現:

  • 內置一維數組T[]實施IEnumerable<T>
  • 所有的通用.NET的集合實現使用yield return產生IEnumerable<T>
  • IEnumerable<T>
  • 方法.NET LINQ庫中的方法都會返回並返回IEnumerable<T>

如果你想測試你的方法,通過它一個數組Type[]

var items = new Type[] { typeof(int), typeof(string), typeof(long) }; 
Pairwise(items, (a, b) => { 
    Console.WriteLine("A={0}, B={1}", a.Name, b.Name); 
}); 
+0

所以你說var items = new Type [] {1,2,3,4,5};會是有效的輸入?我的這一錯誤。說啓用轉換int到System.Type – Nulle

+2

@Nulle我從來沒有說過你可以用整數初始化一個'Type'類型的元素數組。你需要在那裏指定類型。 – dasblinkenlight

相關問題