Birisi Func<int, string>
'un ne olduğunu ve bazı açık örneklerle nasıl kullanıldığını açıklayabilir mi diye merak ediyordum.Func'in açıklaması
cevap
Are: Burada
onun kullanım örneğidir? delegates and events ile ilgili bir sayfam var, ancak bu ikisi arasındaki farkları açıklamaya yönelik olsa da yardımcı olamaz. o bildiriminde karşılık gelen tip argümanlar (int
ve
string
) ile
tip parametreleri (
T
ve
TResult
) değiştirerek herhangi bir özel durumda ne anlama geldiğini çalışmak -
Func<T, TResult>
sadece genel temsilci olduğunu. Func<int, string>
bir işlevi bir int
argüman alıp bir string
dönen temsil eden bir temsilci olduğu, başka deyişle
string ExpandedFunc(int x)
: Ben de karışıklığı önlemek için yeniden adlandırdık. LINQ'da, hem projeksiyonlar hem de yüklemler için sıklıkla kullanılır (TResult
her zaman bool
'dur). Örneğin, bir dizi dizgiyi bir dizi diziye yansıtmak için Func<int, string>
kullanabilirsiniz. Genellikle alakalı delege oluşturmak için LINQ kullanılanLambda ifadeleri:
Func<int, string> projection = x => "Value=" + x;
int[] values = { 3, 7, 10 };
var strings = values.Select(projection);
foreach (string s in strings)
{
Console.WriteLine(s);
}
Sonuç:
Value=3
Value=7
Value=10
Bir parametre olarak bir int
alır ve string
türünde bir değer döndüren bir temsilci. Genel olarak delege aşina
using System;
class Program
{
static void Main()
{
Func<Int32, String> func = bar;
// now I have a delegate which
// I can invoke or pass to other
// methods.
func(1);
}
static String bar(Int32 value)
{
return value.ToString();
}
}
Teşekkürler andrew. Bar (1) yerine func (1) yazmak mı istediniz? – zSynopsis
Evet yaptım!Düzeltme için teşekkürler! –
A Func<int, string>
int'leri yiyip dizeleri döndürür. Öyleyse, ne yer ve ne dizeleri döndürür? Bunun hakkında ...
public string IntAsString(int i)
{
return i.ToString();
}
Burada, yalnızca inox'ları yiyen ve dizeleri döndüren bir işlev yaptım. Nasıl kullanırdım?
var lst = new List<int>() { 1, 2, 3, 4, 5 };
string str = String.Empty;
foreach(int i in lst)
{
str += IntAsString(i);
}
// str will be "12345"
Çok seksi değil, biliyorum, ama bu pek çok hileye dayanan basit bir fikir. Şimdi bir Func kullanalım. Bu fnc adlandırılan (yöntemlere bu referanslar delegates adlandırılır) ve kullanılana bunun yerine Bunun yerine her üyesinde IntAsString çağrı
Func<int, string> fnc = IntAsString;
foreach (int i in lst)
{
str += fnc(i);
}
// str will be "1234512345" assuming we have same str as before
, bir referans oluşturulur. (Fnc'nin inft'leri yediğini hatırlar ve dizeleri döndürür).
Bu örnek çok seksi değil, göreceğiniz zeki şeylerden bir tanesi basit bir işlev olan delegeler ve extension methods.
Bu şeylerde gördüğüm en iyi primerlerden biri here. Çok daha gerçekçi örnekleri var. :)
Bu açıklamayı beğendim –
@Therealnapster ben de beğeniyorum ama isminizi daha çok seviyorum. – BKSpurgeon
- 1. Sütun Google grafik açıklaması konum açıklaması
- 2. POCO'nun Açıklaması
- 3. iOS rotasyon matrisinin açıklaması
- 4. Java'da kod açıklaması
- 5. İp veri yapısı açıklaması?
- 6. Çoklu gösterge açıklaması
- 7. Nginx: $ request_time'ın açıklaması gerekiyor
- 8. Tensorflow'da GRU hücresinin açıklaması?
- 9. kristal formülü açıklaması
- 10. ldd çıkışının açıklaması
- 11. Johnson Algoritması grafiği açıklaması
- 12. IplImage * img'in açıklaması
- 13. JAXB Belgeleri Açıklaması
- 14. hiperlink Android Market açıklaması
- 15. Killer Apps mimari açıklaması
- 16. Lambda İfadesi + Tablosunun Açıklaması *
- 17. window.performance açıklaması javascript
- 18. Asm kodunun açıklaması
- 19. AStar - isminin açıklaması
- 20. @code java ek açıklaması,
- 21. Dizi Dize Açıklaması
- 22. Sudoku Çözücü Kod açıklaması
- 23. JSF görüntülü HTML açıklaması
- 24. IMEI kodu/01 açıklaması
- 25. R yuvarlama açıklaması
- 26. ek açıklaması görünmez mi?
- 27. Postacı eksik Durum Açıklaması
- 28. Birim Test Açıklaması Soru
- 29. Spring Security Meta Açıklaması
- 30. @CrossOrigin ek açıklaması, IntelliJ
"Başka bir deyişle, bir bağımsız değişken alarak ve bir dizeyi döndüren bir işlevi temsil eden bir temsilci." Sadece diğerleri için karışıklıktan kaçınmak için Func hakkında konuştuğunuzdan ve Func 'dan bahsetmeyeceğim. Genel türleri ve delegeleri anlıyorsanız, ancak bunu yapmayanlar için, int argümanını alan ve bir dize döndüren bir işleve delege eden Func . –
Daha sonra bir PC'ye döndüğümde açıklığa kavuşacak. –
Downvoters: lütfen nedenleri belirtin ... –