C# Problem z interface

C# Problem z interface
D1
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 6 lat
  • Postów:34
0

Witam,

Chce zrobić interface który ma zmienne zapisujące statystyki postaci i chce teraz użyć je w klasie która przechowuje dla konkretnej jednostki.

Kopiuj
    interface Szkielet
    {

        uint health { get; set; }

    }

    class Warrior : Szkielet
    { 
  
        public uint health
        {
            get => throw new NotImplementedException();
            set => health = 100;
        }

A potem chciałem wyświetlić w richboxie czy działa wartość tej zmiennej.

Kopiuj
 Warrior warrior = new Warrior();
richTextBox1.Text = warrior.health.ToString();

Jednak nic się nie wyświetla. Dopiero zaczynam naukę z tym i jeszcze nie rozumiem tego do końca.

Ktos
Moderator
  • Rejestracja:prawie 23 lata
  • Ostatnio:około godziny
1

Kod z set wykonuje się wtedy, kiedy próbujesz coś zapisać do swojej zmiennej health. Z kolei kod z get, kiedy próbujesz ją odczytać. To zadziwiające, że ci się nic nie wyświetla, bo powinieneś dostać wyjątek przy próbie odczytu warrior.health.

Ogólnie: nadanie podstawowej wartości jest zadaniem konstruktora, nie settera. Nieco bardziej poprawna wersja:

Kopiuj
interface Szkielet
{
    uint Health { get; set; }
}

class Warrior : Szkielet
{
    public uint Health { get; set; }

    public Warrior()
    {
        Health = 100;
    }        
}

Alternatywnie: public uint Health { get; set; } = 100 też będzie ok. Na początku, po utworzeniu każdego obiektu klasy Warrior, wartość właściwości Health będzie wynosiła 100.

edytowany 1x, ostatnio: Ktos
D1
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 6 lat
  • Postów:34
0

Dziękuje za wyjaśnienie i pomoc.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.