2009-04-08 22 views
5

Neden mü bu derleme:Sözlükler ve Lambda'lar eğlenceli

public Dictionary<ValueLineType, 
        Func<HtmlHelper, 
         string, 
         object, 
         Type, 
         string>> constructor = 
     new Dictionary<ValueLineType, 
         Func<HtmlHelper, 
          string, 
          object, 
          Type, 
          string>>(); 

ama ekstra bir Func (boolean) parametre ile bu diğeri:

public Dictionary<ValueLineType, 
        Func<HtmlHelper, 
         string, 
         object, 
         Type, 
         bool, 
         string>> constructor = 
     new Dictionary<ValueLineType, 
         Func<HtmlHelper, 
          string, 
          object, 
          Type, 
          bool, 
          string>>(); 

Ya alıyorum kör ya da Bugün öğreneceğim başka bir şey var: D

+0

Bu arada, ikinci satırın hatası şöyledir: "Genel türünü kullanma" System.Func "gerektirir '2' tür bağımsız değişkenler" – antonioh

+3

BTW, 'var' anahtar sözcüğü yeni arkadaşınız. Http://msdn.microsoft.com/en-us/library/bb383973.aspx ve http://stackoverflow.com/questions/9033#9035 adresine bakın. – lacop

+0

kesinlikle iki kez yazmaktan çok daha iyi! – antonioh

cevap

18

Func<T1,T2,T3,T4,T5,TResult> diye bir şey yoktur. Elbette, kendi ilan edebilir

Func<T> 
Func<T1, TResult> 
Func<T1, T2, TResult> 
Func<T1, T2, T3, TResult> 
Func<T1, T2, T3, T4, TResult> 
SpinalTap<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> 

:

public delegate TResult Func<T1, T2, T3, T4, T5, TResult> 
    (T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5); 

Ancak, en Sadece (dönüş değeri için bir tane olmak üzere, yani 5 tip parametreleri,) kadar 4 gibi parametreler gider Bu noktada, bu parametrelerin bazılarını bir arada saklayabilmeniz konusunda gerçekten dikkatli düşünürdüm. Tamamen ilgisizler mi?

+0

Ancak, jeneriklerle sadece delegeler olduklarından, kendi adınızı ekleyemezsiniz. – Samuel

+0

Gerçekten. Düzenleme ... –

+0

@Me: 4'ten fazla parametre ile kendi ekleyin. – Samuel

3

Func adlı 1 ila 5 parametresi alan çerçeve tarafından tanımlanan farklı sınıflar vardır. Kendi sınıfınızı tanımlamanız gerekir 6.

+0

Func sadece 4 parametre kadar tanımlar - ancak 5 * tip * parametreler. –

0

Func only dörtten fazla parametre Func ve Eylem jenerik türlerini içerecek, Bilginize NET kütüphanelerinin sonraki sürümü 4 args ve TResult

10

sürer.

İlgili konular