Problem z metodą.

0

Witam jestem początkującym programista w C#. Napisałem programik który zawiera klasę AddressBook która zawiera metodę AddContact dodającą do tablicy baza_kontaktów która jest typu Contact, wartości poszczególnych pól obiektu contact1. Niestety nie udaje sie przypisać w metodzie AddContact wartości przekazanej do tej metody, występuje błąd juz po uruchomieniu w lini: baza_kontaktów[numer_wpisu].ID = c.ID;

Unhandled Exeption: System.NullReferenceExeption: Object reference not set to an instance of an object.

Czy mógłby mi ktoś wyjaśnić w czym tkwi błąd ?

namespace klasa_testy
{
class Program
{

    public class AddressBook
    {
        public Contact[] baza_kontaktów = new Contact[100];       
        public static int numer_wpisu = 0;
       
        public void AddContact(Contact c)      
        {
            baza_kontaktów[numer_wpisu].ID = c.ID;
            baza_kontaktów[numer_wpisu].FirstName = c.FirstName;
            baza_kontaktów[numer_wpisu].LastName = c.LastName;
            baza_kontaktów[numer_wpisu].Email = c.Email;
            AddressBook.numer_wpisu++;
            Console.WriteLine("{0} {1} {2} {3} Wpis został wykonany pomyślnie.",c.ID, c.FirstName, c.LastName,c.Email);
        }

        public void ShowContact()
        {
            Console.Write("Podaj ID klienta: ");
            int indeks = Int32.Parse(Console.ReadLine());
            Console.WriteLine("{0} {1} {2} {3}", baza_kontaktów[indeks].ID, baza_kontaktów[indeks].FirstName, baza_kontaktów[indeks].LastName, baza_kontaktów[indeks].Email);
        }

    }

    public class Contact
    {
        public Contact()
        {
            ID = 0;
            FirstName = "";
            LastName = "";
            Email = "";
        }
        public int ID;
        public string FirstName;
        public string LastName;
        public string Email;            
    }


    static void Main(string[] args)
    {
        Contact contact1 = new Contact();
        contact1.ID = 1;
        contact1.FirstName = "Piotr";
        contact1.LastName = "Grochowski";
        contact1.Email = "[email protected]";

        AddressBook addBook1 = new AddressBook();
        addBook1.AddContact(contact1);
    }
}

}

0

po prostu obiekt w tablicy o danym indeksie jest NULL, nie mozesz wyciagnac z niego ID.
rób tak:
baza_kontaktów[numer_wpisu] = c;
numer_wpisu++;

0

garsc teorii
JakisTyp[] tablica = new JakisTyp[rozmiar];
powoduje ze jest rezerwowane miejsce na jakas ilosc elementow typu JakisTyp
kazdy element tablicy ma wartosc default(JakisTyp)
dla typow referencyjnych (wszystkie klasy) wartosc domysla to null
dla typow value type wartosc domyslna zalezy od typu, np. dla int to 0 (zero) (najczesciej jest to jakis odpowiednik zero dla danego typu)

0

Dzięki, teraz działa :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1