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

C# - "Object reference not set to an instance of an object.”

Cloud VPS
0 głosów
266 wizyt
pytanie zadane 12 stycznia 2023 w C# przez Dzik1121 Nowicjusz (160 p.)

Witam
Niestety, ale nie jestem dobry w te klocki a dostaje komunikat o taki

oto kod:

namespace abstrakcja
{
    public class Program
    {
        abstract public class Ssak
        {
            public int Wiek { set; get; }
            public int Waga { set; get; }

            abstract public void dajGlos();
        }
        public class Pies : Ssak
        {
            public Pies() { }
            public Pies(int wa, int wi)
            {
                Waga = wa; Wiek = wi;
            }
            override public void dajGlos()
            {
                Console.WriteLine("Hau hau!!!");
            }
        }
        public class Kot : Ssak
        {
            public Kot() { }
            public Kot(int wa, int wi)
            {
                Waga = wa; Wiek = wi;
            }
            override public void dajGlos()
            {
                Console.WriteLine("Miau Miau!");
            }
            public class Kon : Ssak
            {
                public Kon() { }
                public Kon(int wa, int wi)
                {
                    Waga = wa; Wiek = wi;
                }
                override public void dajGlos()
                {
                    Console.WriteLine("Ichacha ichacha!");
                }
            }
            public class Swinia : Ssak
            {
                public Swinia() { }
                public Swinia(int wa, int wi)
                {
                    Waga = wa; Wiek = wi;
                }
                override public void dajGlos()
                {
                    Console.WriteLine("Chrrr Chrrr");
                }
            }
            public static void Main()
            {
                Ssak[] t = new Ssak[5];
                int co;
                Console.WriteLine("\nCo chcesz stworzyc \nl\tpies\t2\tkot\t3\tkon\t4\tswinie\t5\tssak");
                for (int i = 0; i < 5; i++)
                {
                    co = Console.ReadKey().KeyChar - 'O';
                    switch (co)
                    {
                        case 1:
                            Pies s = new Pies(3, 5);
                            t[i] = s;
                            break;
                        case 2:
                            Kot b = new Kot(2, 8);
                            t[i] = b;
                            break;
                        case 3:
                            Kon c = new Kon(2, 8);
                            t[i] = c;
                            break;
                        case 4:
                            Swinia d = new Swinia(2, 8);
                            t[i] = d;
                            break;
                    }
                }
                Console.WriteLine();
                foreach (Ssak a in t)
                    a.dajGlos();
            }
        }
    }
}

Niestety nie rozumiem o co tutaj chodzi. Jest mi ktoś wstanie powiedzieć?

komentarz 13 stycznia 2023 przez Oscar Nałogowiec (29,360 p.)
Dobrze dałeś te klamerki? Kon, Swinia i Main są wewnątrz klasy Kot.

1 odpowiedź

0 głosów
odpowiedź 13 stycznia 2023 przez VBService Ekspert (256,600 p.)
edycja 13 stycznia 2023 przez VBService

Zobacz co zawiera zmienna co

co = Console.ReadKey().KeyChar - 'O';
Console.WriteLine(co);

 

proponuje np. taki zapis (1 - pies jest domyślnym, w razie nieprawidłowego naciśnięcia klawisza, możesz ustalić inny default-owy obiekt)

[ on-line ]

                    int co = (int)Console.ReadKey(true).KeyChar;
                    switch (co)
                    {

                        case '2':
                            Kot b = new Kot(2, 8);
                            t[i] = b;
                            break;
                        case '3':
                            Kon c = new Kon(2, 8);
                            t[i] = c;
                            break;
                        case '4':
                            Swinia d = new Swinia(2, 8);
                            t[i] = d;
                            break;
                        case '1': // naciśnięcie 1 jak i...
                        default: // ... naciśnięcie dowolnego klawisza z wyjątkiem 2,3,4
                            Pies a = new Pies(3, 5);
                            t[i] = a;
                            break;
                    }

 

Podobne pytania

0 głosów
1 odpowiedź 579 wizyt
0 głosów
0 odpowiedzi 2,211 wizyt
pytanie zadane 28 października 2018 w C# przez DreaM Użytkownik (840 p.)
0 głosów
1 odpowiedź 1,754 wizyt

93,464 zapytań

142,459 odpowiedzi

322,729 komentarzy

62,844 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

Kursy INF.02 i INF.03
...