struktura jako statyczny member klasy

0

Pytanie jak w temacie. Jak zadeklarowac takie cos w c#? Da sie?
Powiedzmy ze chce miec klase Player, ktora ma wspolne cechy dla wszystkich instancji (statyczne). Chcialbym to zebrac w strukture tak aby mozliwe bylo np. takie wywolanie:

Player.Settings.StartingHealth = 20;
Player.Settings.Damage = 50;

Player a = new Player();
Player b = new Player();
 

Gdzie Player jest Klasa a Settings statyczna struktura wspolna dla wszystkich instacji Player. Probowalem szukac w google ale wszystko co dostaje to:
difference between struct and class :(

Moglbym zrobic to tak, ze mam statyczne:

Player.Settings_StartingHealth = 20;
Player.Settings_Damage = 50;
 

Ale takie cos brzydko wyglada :)

0
struct PlayerSettings {
   public int startingHealth;
   public int damage;
}

class Player {
   public static PlayerSettings settings;
   static Player() {  /* konstruktor statyczny */
      settings.startingHealth = 20;
      settings.damage = 50;
   }
   public void ShowStats() {
     System.Console.WriteLine("health = {0}",settings.startingHealth);
     System.Console.WriteLine("damage = {0}",settings.damage);
   }
}

class Program {
  static void Main()
   {
     Player a = new Player();
     Player b = new Player();
     a.ShowStats();
     b.ShowStats();
   }
}
0

Dzieki.
Brakowalo

static

w konstruktorze klasy Player

 Teraz pytanie extra dlaczego tak sie robi? Czy to jest analogicznie do metod czysto wirtualnych (abstrakcyjnych) w C++, gdzie trzeba dac <code class="csharp">virtual void Costam() = 0;
0

Statyczne, to znaczy będące wspólne dla wszystkich obiektów danej klasy.
Metody abstrakcyjne to inna para kaloszy.

0

Teraz pytanie extra dlaczego tak sie robi?
konstruktor statyczny wywoływany jest raz dla całego programu. nie jest wywoływany przy każdym tworzeniu obiektu przez new.

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