Názory ke článku Konstruktory v C#
Je to IMHO dobrej článek pro začátečníky, ale mám pocit, že už to tady bylo. Cennější by bylo probírat další problematiku. K obsahu bych vytknul chybné odsazení zdrojáků.
BTW: Statické konstruktory jsou, pokud vím, vždy volány před vytvořením první instance nebo před prvním přístupem ke statickým členům.
8. 4. 2008
Reagoval na komentář od uživatele Dušan Janošík :
A jeste bych dodal ze staticky konstruktor a staticka trida ma pouze jednu instanci v celem programu. Takze se pak trida chova jako funkce papriklad v c++
8. 4. 2008
Reagoval na komentář od uživatele Olin :
sorry ale statická třída a mít instanci?
měl si snad namysli třídu která implmentuje návrhový vzor Singleton ne?
12. 4. 2008
Mohl bys taky napsat o Destruktorech (Dispose a Finalize), kdy by se měli používat, jak se používají apod.?
Reagoval na komentář od uživatele SneakerXZ : Určitě napíšu, momentálně mám rozdělého něco o MS Expression Blend, pak bych něco o destruktorech udělat mohl...:)
15. 4. 2008
Docela bych nesouhlasil s odvážným tvrzením, že základní poznávací prvek konstruktoru je shodný název s třídou. Klidně si vytvořím 20 přetížených metod, které budou mít stejný název jako třída, které přísluší.
Poznávacím prvkem by spíš mělo být, že nemá návratový typ a až druhotně ona poznámka se stejným názvem.
Jinak dobrý článek.
11. 5. 2008
Zdravim,
tvrzení v článku (viz citace níže) není pravdivé. U bázové třídy je vygenerován veřejný konstruktor a pokud v odvozené třídě nespecifikuji, na jaký konstruktor v bázové třídě se odkazuji, je hledán a spuštěn konstruktor bázové třídy bez argumentů.
Taková situace vyvolá při kompilaci chybu, tentokrát nepomůže ani výše zmiňovaná funkce kompilátoru. Jednoduše musíte mít vždy definovaný konstruktor pro bázovou třídu, pokud ho bude mít nějaká z odvozených tříd.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class A
{
}
class B :A
{
public B(int i)
{
}
}
class Program
{
static void Main(string[] args)
{
B b = new B(4);
}
}
}
12. 5. 2008
Psát o privátních konstruktorech že jsou "skoro k ničemu" je slušně řečeno úsměvné :-). Možná by bylo dobré si o tom něco přečíst - vždyť takové třídy ve Frameworku jsou a jsou "k něčemu" a dokonce můžete získat její instanci (i když ne pomocí "new"). Příkladme za všechny budiž "System.Data.DataRow" (i když pravda ten má konstruktor protected a ne private, ale problém je to podobný). Chtělo by to trošku vylepšit :§-)
Jinak dobrý článek.
Reagoval na komentář od uživatele Rene Stein : Děkuju za výtku, zkoušel jsem to a skutečně máte pravdu. Hned to opravím.
19. 5. 2008
Lidi, vymyslel jsem si takovou blbost, ale může mi někdo poradit? Stručně řečeno: konstruktor na základě Id načte data z databáze a naplní jimi vlastnosti objektu (reflexe). Poté instanci uloží do kolekce. Pokud bude znovu volán tento konstruktor se stejným Id, chtěl bych, aby se již obsah třídy nenačítal z databáze, ale vrátil rovnou z paměti. Takže bych potřeboval něco jako FillFromCache(this), což ale nefunguje - nevyhodí výjímku, ale vlastnosti třídy jsou nastaveny na null. Napadá někoho, jak toto obejít? Jestli to dobře chápu, tak v konstruktoru nejde "přesměrovat" referenci instance na jinou... Díky.
24. 6. 2008
Reagoval na komentář od uživatele Teclik :
Zkusil bych tu kolekci deklarovat jako static.
2. 10. 2008
No myslim, ze takovychto clanku je na netu miliarda. Uz kdyz si date genericky vytvorit novou klasu, tak se tohle predvyplni. A zdroj... sorry, ale "prelozit" clanek z anglictiny a podepsat se pod nej... a pak pod svou fotkou mit seznam podobnych clanku. Uz aby se zacaly za tohle sekat ruce...
17. 2. 2009
To jste napsal je tupym prekladem http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=777. Proc se tvarite jako autor?
Reagoval na komentář od uživatele hooker :Odkaz na zdroj je vždy dole pod článkem, není to krádež.
1. 5. 2009
Dušan Janošík píše:
Je to IMHO dobrej článek pro začátečníky, ale mám pocit, že už to tady bylo. Cennější by bylo probírat další problematiku. K obsahu bych vytknul chybné odsazení zdrojáků.
BTW: Statické konstruktory jsou, pokud vím, vždy volány před vytvořením první instance nebo před prvním přístupem ke statickým členům.
Podle mě se jedná o skvělý článek. Začínám v C sharp a nehledám tutoriály typu "Hello word", ale chci znát všechny spojitosti z teoretického hlediska a vědět, jak co funguje, třeba i privátní konstruktory. Děkuji autorovi toho článku za překlad, dobrá práce.
Reagoval na komentář od uživatele Jakub Kottnauer :
heh nikto tu nevravi o kradezi ale o tom, ze je to len surovo prelozene a sem vlozene ...kebyze napises nieco zo svojej hlavy nikto ti na to nic nepovie max ta upozorni na nedostatky. V kazdom pripade ludom ktory nevedia po anglicky a su zacinajuci programatori to pomoct moze.
K tym privatnym konstruktorom. To co si napisal uz asi vies, ze je blbost.