Početnički problem

Početnički problem

offline
  • Pridružio: 08 Sep 2017
  • Poruke: 2

Pre mesec dana sam počeo sa učenjem C# i eto, odmah sam zapeo i veoma mi je bitno da shvatim gde grešim, dok sam još na početku.
Uzeo sam neki primer (neka glupost sa psima) sa neta u kome se kreiraju dve klase (main i dog) . Kad u VS 2015 (ili sharpdevelop-u) obe klase ispisem u istom prozoru program funkcionise:

using System; namespace StaticDog {    public class Dog    {       static int dogCount;             private string name;       private int age;                 public Dog(string name, int age)       {          this.name = name;          this.age  = age;                   Dog.dogCount += 1;       }    class Program    {       public static void Main()       {          Dog dog1 = new Dog("Jacky", 1);          Dog dog2 = new Dog("Lassy", 2);          Dog dog3 = new Dog("Rex", 3);                    Console.WriteLine("Dog count is now " + Dog.dogCount);          Console.ReadKey(true);       }    }    } }


Kad kreiram posebnu klasu Dog preko add->class dobijam grešku:
CS0122 'Dog.dogCount' is inaccessible due to its protection level StaticDog

namespace StaticDog {     class Dog     {                // Static (class) variable         static int dogCount;         // Instanc variables         private string name;         private int age;         public Dog(string name, int age)         {             this.name = name;             this.age = age;             Dog.dogCount += 1;         }     } } namespace StaticDog {     class Program     {         public static void Main()         {             Dog dog1 = new Dog("Pufi", 1);             Dog dog2 = new Dog("Lufi", 2);             Dog dog3 = new Dog("Mufi", 3);             // Access to the static variable             Console.WriteLine("Dog count is now " + Dog.dogCount);             Console.ReadKey();         }     } }

Program u drugoj varijanti radi samo ako polje dogCont setujem kao Public.
U čemu je problem?

Pozdrav i hvala!



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4458

Problem je u tome što je dogCount promenljiva podrazumevano definisana kao private. Iz tog razloga moraš da je definišeš kao public da bi bila vidljiva i van klase.

Citat:Class members, including nested classes and structs, can be public, protected internal, protected, internal, or private. The access level for class members and struct members, including nested classes and structs, is private by default.

Više



offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14249
  • Gde živiš: Niš

A sve to u prvom primeru radi zbog toga što je klasa Program privatna klasa članica klase Dog (to si sa namerom uradio tako ili?).

offline
  • Pridružio: 08 Sep 2017
  • Poruke: 2

Takav je primer. Mene interesuje zašto u prvoj varijanti nema greške, a kada je urađeno po drugoj varijanti to ne funkcionise (javlja se greška), tj. da li postoji urazlika kada se klase dodaju u Solution exploreru (varijanta 2) ili kad sve klase "upisuju" u jednom prozoru (program.cs) (varijanta 1)... Mislim, pitanje je više vezano za tehniku programiranja u c#...




offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14249
  • Gde živiš: Niš

dekilee125 ::da li postoji urazlika kada se klase dodaju u Solution exploreru (varijanta 2) ili kad sve klase "upisuju" u jednom prozoru (program.cs) (varijanta 1)... Ako se klase definišu kao dve odvojene klase, suštinski nema razlike da li je sve to smešteno u jedan ili u više različitih fajlova. Međutim, obrati pažnju na ono što sam prethodno napisao - zbog toga što je klasa Program privatna klasa članica klase Dog. Dakle, u prvom primeru klasa Program je definisana u okviru klase Dog (i samo se u okviru nje može koristiti budući da je privatna), dok je u drugom primeru klasa Program definisana u okviru namespace-a. Tu postoji razlika.

Ko je trenutno na forumu
 

Ukupno su 758 korisnika na forumu :: 40 registrovanih, 8 sakrivenih i 710 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 2413 - dana 03 Okt 2019 05:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: aleksmajstor, amonsrb, Arhiv, Atomski čoban, bankulen, Boris Bosiljčić, BSD2, darkstar101, DJORDJE-NO-1, djordje92sm, flash12, FOX, kljift, Koca Popovic, Kubovac, lav23, madza2, majorgaspar, mercedesamg, milimoj, MilosKop, mirbat, MORAVA1, nebkv, NenadG, Panonsky, pein, renoje2, RJ, rovac, sakota79, soonne, tokivoki01, vargas, vathra, vlad the impaler, voja64, vukovi, šumar bk2, 1872