Size bakın MSDN makalesinden, C# Bu yöntemin tanımı bakmak yardımcı olabilir: Bu genel yöntem için tip parametrelerini belirtmek
public static IEnumerable<TResult> Select<TSource, TResult>(
this IEnumerable<TSource> source,
Func<TSource, TResult> selector
)
<
açılı ayraçlar >
ve biz Yöntemin amacını, sadece tip parametrelerinin ne yaptığını inceleyerek keşfetmeye başlayın.
Select<TSource, TResult>
Bu yöntem iki farklı türde Select
fırsatları denilen söyler:
Biz jenerik yöntemin adına bakarak başlamak
- tip
TSource
; ve
- tip
TResult
en parametreleri bakalım:
- İlk parametre
IEnumerable<TSource> source
- bir TSource
sayımını sağlayan bir kaynak. Bir TSource
alır ve TResult
haline döner bir selektör fonksiyonu -
- ikinci parametre
Func<TSource, TResult> selector
olup.
Sonra onun dönüş değeri bakmak (Bu Func
tanımını keşfederek doğrulanabilir):
IEnumerable<TResult>
Biz şimdi bu yöntem TResult
numaralandırma dönecektir biliyorum.
Özetlemek gerekirse, TSource
bir sayımını alır bir işlev ve bireysel TSource
öğeleri alır ve TResult
öğeleri döndürür ve sonra tüm seçme işlevi TResult
bir sayımını döndüren bir selektör fonksiyonu var.
Bir örnek:
somut koşulları yerleştirmek için TSource
tip Person
(a ad, yaş, cinsiyet, vb ile bir kişiyi gösteren sınıfı) ve TResult
ait değildir olduğunu söylemek sağlar String
yazın (kişinin adını temsil eden). Biz Select
fonksiyonu Person
s listesini vereceğim ve verilen bir Person
sadece kendi ismini seçecektir bir işlev ediyoruz. Bu Select
işlevini çağıran çıktı olarak, sadece insanların isimlerini içeren String
s listesini alacağız. Kenara
:
orijinal yöntem imzadan bulmacanın son parçası, üst kısmında, birinci parametreden önce this
anahtar kelimedir. Bu Extension Methods tanımlamak için sözdizimi parçasıdır ve aslında anlamı hepsi sadece sanki yerine statik seç yönteminin çağrılmasının (kaynak numaralandırma geçen ve seçici fonksiyonu) Eğer sadece numaralandırma üzerinde doğrudan seç yöntemini çağırmak olmasıdır Bir Select
yöntemine sahipti (ve sadece bir parametrede - seçici işlevi).
bunun senin için daha açık hale getireceğini umuyoruz?
Bu ayrıntılı yanıt için teşekkürler. Enumerable.Select kelimesini yazan "Yöntem" anahtar kelimesi bir yöntem midir? Sanırım bu gibi herhangi bir yardım hattını nasıl çözebilirim? –
Evet, doğru. MSDN konusunun başlığı size üyenin adını, tür (yöntem, özellik, olay, alan) ve aşırı yüklü yöntemler için baktığınız aşırı yükün imzasını anlatıyor. (Enumerable.Select söz konusu olduğunda, iki aşırı yüklenme vardır, onların haritalama işlevi türleri tarafından ayırt edilirler.) – itowlson