Bu temel tanımlara sahip olanBasit Linq ifadesi derlenmez
bool MyFunc(string input)
{
return false;
}
var strings = new[] {"aaa", "123"};
Bunun neden derlenmeyeceğini merak ediyorum:
var b = strings.Select(MyFunc);
Fakat bu olacaktır:
var c = strings.Select(elem => MyFunc(elem));
Hata iletisi "Tür argümanlar 'System.Linq.Enumerable.Select (System.Collections.Generic.IEnumerable, System.Func)' yöntemi için kullanımdan çıkarılamaz.
Yeniden Paylaşılan hata ipucu,
Select(this IEnumerable<string>, Func<string, TResult>)
ve
Select(this IEnumerable<string>, Func<string, int, TResult>)
arasında karıştırıldığını söylüyor ... ancak MyFunc imzası açık - sadece bir (string) parametresi alıyor.
Burada biraz ışık tutabilir mi?
yüzden * mantıksız * değildi şeyleri anlardı ... –
@Cristi: Nope ...tam olarak nasıl çalışması gerektiğini speklerden ayırt etmeye çalışmak zor olsa da. Bence "Burada ejderhalar olmak" yazan türün çıkarım türünü düşünüyorum. –
Değişiklik C# 3'e geçmek için çok geç olduğunda bu davranışı değiştirmeye karar verdik, bu yüzden C# 4 yerine koyduk. –