Jakie są różnice pomiędzy polami a właściwościami?


Pole to zmienna dowolnego typu zadeklarowana w klasie.
public class Car 
{
   private int MaxSpeed;
   private Drvier drvier;
}
Właściwości w C# to użyteczna konstrukcja językowa stanowiąca swego rodzaju rozszerzenie dla pól.
Korzystając z właściwości możemy umożliwić dostęp do prywatnych składowych klasy, ale odczyt oraz edycja pola odbywają się na zasadach określonych we właściwościach.
 public class Car
{
   private int _MaxSpeed = 100;
   
   public int MaxSpeed
   {
      get
      {
         return _MaxSpeed;
      }
      set
      {
         _MaxSpeed =value;
      }
   }
}
Co w przypadku jeżeli ktoś spróbowałby ustawić _maxSpeed na wartość mniejszą od zera?
Dokonując drobnych zmian w powyższym kodzie jesteśmy w stanie się przed tym zabezpieczyć.
 public class Car
{
   private int _MaxSpeed = 100;
   
   public int MaxSpeed
   {
      get
      {
         return _MaxSpeed;
      }
   }

   public void SetMaxSpeed(int value)
   {
      if(value < 0)
      {
         Console.WriteLine("Maksymalna prędkość nie może być mniejsza od 0.");
         return;
      }
      _MaxSpeed = value;
   }
}
Ograniczamy dostęp do _MaxSpeed. Odczyt jest możliwy jedynie za pomocą właściwości.
Edytować zmienną możemy jedynie za pomocą funkcji SetMaxSpeed (int value), gdzie umieszczona jest także prosta walidacja wartości.
Oczywiście jest to bardzo uproszczony kod, jednak oddaje on główną zaletę stosowania właściwości.
januszgorszyciel 06-11-2018 08:54
Pole private z wielkiej litery - oczy krwawią :D. Odsyłam do zalecanych konwencji. https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/inside-a-program/coding-conventions Oczywiście nie chodzi o to by 1 do 1 to wykorzystywać ale w tej sytuacji dla programisty C# taki widok boli i w tej sytuacji promuje błędne nawyki. Łącznie z mityczną podłogą_.

alsenq 02-02-2022 01:51
Różna są konwencje ale rzeczywiście, lepiej z małej, zwłaszcza że jest _ :P


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