Általános meghatalmazottak tömbök és listák manipulálására
Ez a témakör áttekintést nyújt a tömb vagy gyűjtemény elemein végrehajtandó konverziók, keresési predikátumok és műveletek általános meghatalmazottjairól.
Általános meghatalmazottak tömbök és listák manipulálására
Az Action<T> általános meghatalmazott olyan metódust jelöl, amely valamilyen műveletet hajt végre a megadott típusú elemen. Létrehozhat egy metódust, amely végrehajtja a kívánt műveletet az elemen, létrehoz egy példányt a delegáltból, hogy képviselje ezt a Action<T> metódust, majd átadja a tömböt és a delegáltat a Array.ForEach statikus általános metódusnak. A metódust a tömb minden eleméhez meghívjuk.
Az List<T> általános osztály egy olyan metódust ForEach is biztosít, amely a meghatalmazottat Action<T> használja. Ez a módszer nem általános.
Feljegyzés
Ez érdekessé teszi az általános típusokat és metódusokat. A Array.ForEach metódusnak statikusnak (Shared
a Visual Basicben) és általánosnak kell lennie, mert Array nem általános típus. A művelet típusának csak Array.ForEach az az oka, hogy a metódus saját típusparaméterlistával rendelkezik. Ezzel szemben a nemgenerikus List<T>.ForEach metódus az általános osztályhoz List<T>tartozik, így egyszerűen az osztály típusparaméterét használja. Az osztály erősen be van állítva, így a metódus lehet példánymetódus.
Az Predicate<T> általános meghatalmazott egy metódust jelöl, amely meghatározza, hogy egy adott elem megfelel-e az Ön által meghatározott feltételeknek. A következő statikus általános módszerekkel Array kereshet elemeket vagy elemeket: Exists, , Find, FindAll, FindIndex, FindLastFindLastIndexés TrueForAll.
Predicate<T> az általános osztály megfelelő nemgenerikus példánymetódusaival List<T> is működik.
Az Comparison<T> általános meghatalmazott lehetővé teszi, hogy rendezési sorrendet adjon meg a natív rendezési sorrendet nem tartalmazó tömb- vagy listaelemekhez, vagy felülbírálhatja a natív rendezési sorrendet. Hozzon létre egy metódust, amely elvégzi az összehasonlítást, hozzon létre egy példányt a Comparison<T> delegáltból, hogy képviselje a metódust, majd adja át a tömböt és a delegáltat a Array.Sort<T>(T[], Comparison<T>) statikus általános metódusnak. Az List<T> általános osztály megfelelő példánymetódus-túlterhelést biztosít. List<T>.Sort(Comparison<T>)
Az Converter<TInput,TOutput> általános meghatalmazott lehetővé teszi, hogy két típus közötti átalakítást határozzon meg, és az egyik típusú tömböt a másik tömbjeként alakítsa át, vagy az egyik típusból álló listát a másik listájává alakítsa. Hozzon létre egy metódust, amely átalakítja a meglévő lista elemeit egy új típusra, hozzon létre egy delegált példányt, amely a metódust képviseli, és az Array.ConvertAll általános statikus metódussal hozza létre az új típusú tömböt az eredeti tömbből, vagy az List<T>.ConvertAll<TOutput>(Converter<T,TOutput>) általános példánymetódussal készítsen listát az új típusról az eredeti listából.
Meghatalmazottak láncolása
Az ilyen meghatalmazottakat használó metódusok közül sok olyan tömböt vagy listát ad vissza, amely átadható egy másik metódusnak. Ha például ki szeretne jelölni egy tömb bizonyos elemeit, konvertálja ezeket az elemeket egy új típusba, és mentse őket egy új tömbbe, az általános metódus által FindAll visszaadott tömböt átadhatja az ConvertAll általános metódusnak. Ha az új elemtípus nem tartalmaz természetes rendezési sorrendet, az általános metódus által ConvertAll visszaadott tömböt átadhatja az Sort<T>(T[], Comparison<T>) általános metódusnak.