Diskuze: Objekty
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 13 zpráv z 13.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Ty tvoje proměnný (uvodniLokace, arvika, falun...) jsou přístupné pouze po vytvoření nové instance Lokace, tzn, že pro přístup si musíš vytvořit novou instanci lokace a z ní přistoupíš k těm ostatním.
Lokace lokace = new Lokace("Jmeno");
// Ted to bude fungovat.
lokace.uvodniLokace...
Předpokládám, že tohle jsi ale udělat nechtěl. Ty chceš, aby jsi měl ty lokace přístupné staticky, tedy musíš napsat neco jako:
const Lokace uvodniLokace = new Lokace("Úvodní lokace");
pak by jsi se měl na instanci uvodniLokace dostat pomocí:
Lokace.uvodniLokace
Snad jsem Ti pomohl.
Bohužel, zkoušel jsem oba způsoby a ani jeden nefungoval. Ten první je podle mě úplně to samé, co mi už předtím nefungovalo. A při tom druhém postupu mi VS sám nabídne třídu Lokace, ale dál už nic
Tak bych se chtěl opravit před to const dej ještě public:
public const Lokace uvodniLokace = new Lokace("Úvodní lokace");
Teď by to už melo fungovat.
Nejsem si jist, zda jsem dokonale pochopil řešený problém, neměl jsem moc čas jej zkoumat, ale řešení by mohlo být (jak psal Petr Š.) použití statiky. Tedy zkus udělat něco jako:
public static Lokace uvodniLokace = new Lokace("Úvodní lokace");
Pak by tato lokace měla být v pohodě volána bez instance, tedy staticky.
Z toho kodu jsem zmatený, samá lokace. Nemůžeš dávat do konstruktoru takto třídu podle mě, teda já to neumím, ale myslím, že to ani nejde, protože aby si ten konstruktor vytvořil musel bys vytvořit třídu atd...Co to má dělat?
Pravda, omlouvám se, přehlédl jsem tvorbu instance a jen jsem zkopíroval kus kódu s předponou static
public class MojeLokace
{
private string _nazev;
public string Nazev
{
get
{
return this._nazev;
}
set
{
this._nazev = value;
}
}
public MojeLokace(string nazev)
{
this.Nazev = nazev;
}
public static MojeLokace UvodniLokace
{
get
{
return new MojeLokace("Úvodni");
}
}
}
a pracuje se s tím takto:
class Program
{
static void Main(string[] args)
{
var l = MojeLokace.UvodniLokace;
Console.WriteLine(l.Nazev);
}
}
bezproblémově to vrátí název té "statické lokace"
Zámerne chceš aby objekt triedy Lokace mal ďalšie properties triedy Lokace, ktoré budú mať ďalšie properties triedy Lokace, ktoré budú pravdepodobne null, ale budú zmätočné?
Tomu rozumím, že funguje, já jsem se spíše ptal na smysl toho prvního příspěvku a metody PridatSmery(která bere samé lokace). A vlastně ani tady to s tím vrat uvodní lokace mi ted nedává smysl, co vlastně v tom projektu chceš aby to dělalo?
No tak to se me ptas asi spatne, koukni, kdo ten prizpevek pridaval
aha promiň no ten už s náma zatím nekomunikuje, tak uvidíme s čím příjde.
Nic velkého, jen bych si chtěl procvičit, co jsem se prozatím naučil. Ale pokud to bude aspoň trochu vypadat, tak bych to sem možná hodil
Zobrazeno 13 zpráv z 13.