Analiza kodu - zadanie 4

Jaka wartość zmiennej maxSpeed zostanie wyświetlona na konsoli?

public static void Main(string[] args)
{
  CarSpeed speed = new CarSpeed();
  speed.PrintSuperSpeed();
}

public class CarSpeed
{
  public static int maxSpeed;

  public CarSpeed()
  {
    if (maxSpeed == 0)
      maxSpeed = 200;
  }
  static CarSpeed()
  {
    if (maxSpeed == 0)
      maxSpeed = 300;
  }

  public void PrintSuperSpeed()
  {
    if (maxSpeed == 200)
    {
      maxSpeed = 500;
    }
    Console.WriteLine("SuperSpeed : " + maxSpeed);
    Console.ReadLine();
  }
}


Odpowiedź: SuperSpeed: 300

Objaśnienie

Klasa może posiadać tylko jeden konstruktor statyczny i wywoływany jest on zawsze przed pozostałymi konstruktorami, dlatego też maxSpeed przyjmie wartość 300 po stworzeniu obiektu.

januszgorszyciel 07-11-2018 11:29
Żeby odpowiedź była wyczerpująca dodałbym jeszcze link, który wyjaśni praktyczne zastosowanie tego mechanizmu https://stackoverflow.com/questions/4506990/what-is-the-use-of-static-constructors


© 2024 - SkillsTest.pl | | Regulamin | Polityka Prywatnosci