W dzisiejszym wpisie, pokażę jaki wpływ mają klasy na zużycie pamięci. W ostatnim poście pokazałem korzyści płynące ze struktur jeśli mamy do czynienia z małymi kontenerami na dane. Najlepiej odpalmy po prostu następujący kod.
Sztuka programowania 3951 dni, 23 godziny, 39 minut temu 237 źrodło rozwiń
Wiele programistów c# zapomina, że struktury również istnieją w .NET. Mam wrażenie, że jest to konstrukcja bardziej popularna w CPP niż w C#. W praktyce jednak, wybranie struktur zamiast klas, może mieć kolosalne znaczenie jeśli chodzi o wydajność i płynność aplikacji. Nie jednokrotnie porównywałem te dwa typy obiektów na blogu więc podstaw nie będę omawiał tutaj. Przyjmuje, że każdy wie, że struktury znajdują się na stosie a obiekty klas na stercie. W poście chciałbym skupić się na następującym scenar...
Sztuka programowania 3956 dni, 5 godzin, 19 minut temu 385 źrodło rozwiń
Można by rzec ,,Im głębiej w las tym ciemniej”. Po zapoznaniu się ze wcześniejszymi artykułami na temat Klas w C# i Dziedziczenia przyszedł czas na klasę object, klasy abstrakcyjne, instancje i struktury. Może nie są to bardzo trudne zagadnienia ale jeżeli poznasz je i zrozumiesz będziesz mógł tworzyć programy wydajniejsze i bardziej skąplikowane. Zapraszam do lektury.
Na początku stwórzmy strukturę z konstruktorem przyjmującym dwa parametry:publicstruct SampleStruct { public SampleStruct(int x, int y) { _x = x; _y = y; } privateint _x, _y; } Czy powyższy kod jest prawidłowy? Tak, skompiluje się i będzie działał bez problemów. Zdefiniujmy więc domyślny konstruktor:publicstruct SampleStruct { public SampleStruct() { _x = _y =0; } public SampleStruct(int x, int y) { _x = x; _y = y; ...
Znajomość różnić między klasą a strukturą w c# jest bardzo ważna ze względu na kwestie wydajnościowe. Sposób wykorzystania może czasami wydawać się bardzo podobny, jednak to co dzieje się w tle jest kompletnie różne. W przypadku C++, struktury i klasy były bardzo podobne i reprezentowane były w pamięci w taki sam sposób. Różnica polegała na tym, że pola klas domyślnie były prywatne, a struktur publiczne. Przede wszystkim struktura jest wartością (value type) a klasa typem referencyjnym. Value Type jest ...
Załóżmy dla przykładu taki o to kod: public class Point { public int X; public int Y; } class Program { public Point Position { get; set; } public void SetPosition(int x, int y) { Position.X = x; Position.Y = y; } static void Main(string[] args) { var p = new Program(); p.SetPosition(10, 10); Console.ReadLine(); } }