Metoda na zvetseni pole – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Metoda na zvetseni pole – .NET – Fórum – Programujte.comMetoda na zvetseni pole – .NET – Fórum – Programujte.com

 

Pavel
~ Anonymní uživatel
383 příspěvků
7. 11. 2009   #1
-
0
-

Ahojte,

potreboval bych poradit, delam na skolnim projektu a pouzival pole objektu Reader, Book atd., ktera jsou ulozena v objektu Catalog a Catalog ma metodu na vkladani dalsich objeku Book a Reader. A rikal jsem si ze by bylo dobry si udelat vlastni metodu, ktera mi zkontrolu, jest-li je pola pro Book nebo Reader staci a podle potreby by vytvorila nove a prekopirovala to stare a vratila to nove vetsi.

A muj problem je ten, ze nevim jak podle prichazejiciho pole poznat jeho typ a toto pole podle nej pretypovat abych nepouzival typovani Array?

tady je moje metoda:

public static Array Extende(Array array)

{
Array newArray = Array.CreateInstance(array.GetType(), array.Length * 2);
array.CopyTo(newArray, 0);
return newArray;
}
Diky za pomoc

Nahlásit jako SPAM
IP: 89.176.252.–
rudolf_franek0
Stálý člen
7. 11. 2009   #2
-
0
-

array.GetType().GetElementType()
ale prijde mi praktictejsi to nechat obecne, protoze pretypovanim v tomto pripade nic neziskas, leda, ze bys chtel volat
Array.Resize<T>(ref T[] array, int newSize);

Nahlásit jako SPAM
IP: 90.178.66.–
7. 11. 2009   #3
-
0
-

Taky si můžeš napsat vlastní generickou metodu.

Nahlásit jako SPAM
IP: 84.21.124.–
Dušan Janošík | web: djanosik.cz, @djanosik
Pavel
~ Anonymní uživatel
383 příspěvků
7. 11. 2009   #4
-
0
-

No ono je to cviceni prave na pole a tak, proto tam generiku nemuzu pouzit. Ale diky rudolf_franek ten prvni navrh pomohl:)

Nahlásit jako SPAM
IP: 89.176.252.–
8. 11. 2009   #5
-
0
-

To Pavel : Pročpak ne? Nevidím jedinej rozumnej důvod, proč se vyhýbat generikám obecně (zákaz použít generické kolekce by smysl dával).

public static T[] Extende<T>(T[] array)

{
if (array == null)
{
return new T[10];
}

T[] narray = new T[array.Length * 2];
array.CopyTo(narray, 0);
return narray;
}
A jinak, to co chceš dělá už zmíněná metoda Resize<T>(). Vzhledem k tomu, že jde o cvičení, ji asi použít nemůžeš, ale příště by se ti to mohlo hodit.

Nahlásit jako SPAM
IP: 84.21.124.–
Dušan Janošík | web: djanosik.cz, @djanosik
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 46 hostů

Podobná vlákna

Zvetseni pole stuktur — založil mihajlovic11

Zvetseni — založil Anonymní uživatel

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý