• O WordPressie
    • WordPress.org
    • Dokumentacja
    • Naucz się WordPressa
    • Pomoc techniczna
    • Uwagi
  • Zaloguj się
Marek Zając Marek Zając
  • contact@zajacmarek.com Zapraszam do kontaktu
  • Strona główna
  • O mnie
  • Kursy
  • Konsultacje
  • Kanał Youtube
  • 22 października 2014
  • Marek Zając
  • 0 Comments

C# Tips – wskaźniki

Patrząc na tytuł posta osoby mniej zaznajomione z językiem C# mogą zarzucić mi, że wskaźniki to w C++ mamy, a nie w C#, który korzysta wszędzie z referencji. Ale prawda jest taka, że w przeciwieństwie do Javy, C# pozwala korzystać również ze wskaźników w odpowiednio oznaczonych blokach. Jednak ponieważ jest to mechanizm, którego używa się dopiero w specyficznych przypadkach i w większości sytuacji jest niezalecany, dlatego tutaj wspomnę tylko, że takie coś istnieje. Jeśli będziesz potrzebował użyć w praktyce wskaźników w C# to jest duże prawdopodobieństwo, że nie będziesz już początkującym programistą tego języka ;) Od siebie powiem, że jedyna sytuacja kiedy były mi one potrzebne była wtedy gdy potrzebowałem wykonać operację na każdym pikselu wczytanego do tablicy bajtów obrazka i wskaźniki pozwoliły wtedy w znacznym stopniu przyspieszyć ten fragment kodu.

Blok kodu, w którym używasz wskaźników musi być oznaczony jako unsafe, co już samo w sobie jest pewnym ostrzeżeniem o skutkach ich wykorzystania ;) Dodatkowo trzeba w opcjach projektu pozwolić na wykonaniu niebezpiecznego (unsafe) kodu. Wszystko po to, żebyś świadomie korzystał z tego mechanizmu.

Wskaźnik nie może odwoływać się np. do referecji, możesz go utworzyć dla typów prostych (int, double, byte) i dla własnych typów, które zawierają jedynie obiekty, dla których można użyć wskaźnika. Dodatkowo w przeciwieństwie do języka C++ w C# nie ma konieczności zwalniania za alokowanej pamięci, wyręcza nas w tym CLR.

Przykład tworzenia tablicy przy użyciu wskaźników:

unsafe {
    int* tab = stackalloc int[20];
}

Jak widać do alokacji pamięci wykorzystuje się słowo kluczowe stackalloc.

Jak mówiłem, poza bardzo szczególnymi przypadkami, wskaźniki nie są czymś co będziesz często używał dlatego tutaj tylko wspomniałem o tym, że taki mechanizm istnieje, po więcej informacji i przykładów odsyłam do źródła czyli do MSDN.

Related Posts
  • Asynchroniczność w ASP.NET Core 16 stycznia 2020
  • Nie lubię TEGO projektu! 15 stycznia 2020
  • Pierwsze portfolio na GitHubie – Przewodnik 14 stycznia 2020

Leave a Comment Cancel Comment

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Copyright 2020 Bizix, All rights reserved.
  • POLITYKA PRYWATNOŚCI I PLIKÓW COOKIES