2015-04-29 29 views
9

Temsilci olarak dönüştürme:Func Aşağıdaki temsilci tanımladık

public delegate object MyDelegate(dynamic target); 

Ve ben bir Func<dynamic, object> nesne vardır:

Func<dynamic, object> myFunc 

nasıl MyDelegate için myFunc dönüştürebilir?

ben bu talimatları denedi, bunların hiçbiri çalıştı:

(MyDelegate)(x => myFunc(x)) 

Veya eşdeğer:

MyDelegate myDeleg = x => myFunc(x); 

Bu küçük neden

MyDelegate myDeleg = myFunc; 
MyDelegate myDeleg = (MyDelegate) myFunc; 
MyDelegate myDeleg = myFunc as MyDelegate; 
+7

Bence en hoş olanı 'MyDelegate myDeleg = myFunc.Invoke;', [Cast delegate - Func in C#] 'dır (http://stackoverflow.com/a/1907135/7586). Ayrıca 'MyDelegate myDeleg = yeni MyDelegate (myFunc) ' – Kobi

cevap

9

Varolan temsilci sarabilirsiniz Her bir çağrıda performans kaybı ancak kod çok basit.

+0

Sadece açık olması için,' MyDelegate myDeleg = x => myFunc (x);' - döküm olmadan. – Kobi

+0

Vay, bunun hakkında düşünmediğime inanamıyorum. Çok teşekkür ederim! –