• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C# błąd w konstruktorze

Object Storage Arubacloud
0 głosów
261 wizyt
pytanie zadane 23 marca 2016 w C# przez Vento Pasjonat (17,120 p.)

Cześć mam klasę człowiek z konstruktorem:

 

class czlowiek
    {
        private string imie;
        private string nazwisko;
        private int wiek;

        public czlowiek(string imie, string nazwisko, int wiek)
        {
            this.imie = imie;
            this.nazwisko = nazwisko;
            this.wiek = wiek;
        }
    }

 

Gdy tworze nowy obiekt z konstruktorem, to pokazuje błąd na zmiennych: 

admin.imie, admin.nazwisko, admin.wiek

 

 static void Main(string[] args)
        {
            czlowiek admin = new czlowiek("Jan", "Kowalski", 34);
            Console.WriteLine("Cześć {0} {1}! Za 10 lat będziesz miał {2} lat!", admin.imie, admin.nazwisko, admin.wiek + 10);
            Console.ReadLine();
        }

 

6 odpowiedzi

0 głosów
odpowiedź 23 marca 2016 przez achilles147 Dyskutant (9,580 p.)
wybrane 23 marca 2016 przez Vento
 
Najlepsza
Ponieważ twoje składowe imie,nazwisko,wiek są prywatne. Wszystko co jest prywatne w klasie jest widoczne tylko na poziomie klasy. Ty natomiast odwołujesz się do tych składowych na poziomie obiektu "admin". Wystarczy, że zmienisz kwalifikatory dostępu z private na public.

PS: dodałbym jeszcze kwalifikator public przed słowem kluczowym class. Bez tego twoja klasa jest domyślnie prywatna.
+3 głosów
odpowiedź 23 marca 2016 przez Mar Cin Dyskutant (8,900 p.)
Albo poprostu porób gettery i settery :)
+1 głos
odpowiedź 23 marca 2016 przez Surykat Stary wyjadacz (14,780 p.)
Bo zmienne są prywatne- uczyń je publicznymi.

Tak btw: nazwy klas z dużej litery. Poczytaj też, czym są właściwości- nie powinno się robić publicznych pól (zmiennych).
+1 głos
odpowiedź 23 marca 2016 przez Magicone Nałogowiec (45,100 p.)
Co prawda nie piszę w c#, ale czy na pewno możesz mieć dostęp do pól prywatnych poza klasą?
+1 głos
odpowiedź 23 marca 2016 przez niezalogowany

Ustawianie pól jako publicznych (bez konkretnego powodu) nie jest dobrą praktyką. Stwórz settery/gettery, albo najlepiej od razu to zautomatyzuj stosując właściwości (ang. properties) - na msdn masz wszystko ładnie opisane.

komentarz 23 marca 2016 przez Boshi VIP (100,240 p.)
właściwości/atrybuty/properties to jedno i to samo.
komentarz 23 marca 2016 przez niezalogowany
Tak, wiem. Przy czym pisząc settery/gettery miałem na myśli ręczne definiowanie tych funkcji ("JAVOWY" zapis).
0 głosów
odpowiedź 23 marca 2016 przez Vento Pasjonat (17,120 p.)
Rozumiem.

Dziękuję wszystkim za pomoc.

Podobne pytania

0 głosów
3 odpowiedzi 228 wizyt
0 głosów
2 odpowiedzi 158 wizyt
pytanie zadane 22 maja 2016 w PHP przez Kacper Duda Obywatel (1,970 p.)
0 głosów
3 odpowiedzi 390 wizyt
pytanie zadane 11 października 2019 w C# przez JakSky Stary wyjadacz (14,770 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...