Post ma na celu ukazanie kilku ciekawych własności C# i CLR, o których niewielu programistów pamiętam, a których znajomość może oszczędzić niespodziewanych wystąpień NullReferenceException.
Strona głównaUżytkownik
vveasel | użytkownik
Targetowanie projektu na architekturę x86 przy współpracy z natywnymi bibliotekami może nie być eleganckim rozwiązaniem, zwłaszcza jeśli dostępna jest w wersji 32 i 64 bitowej. Można tego uniknąć dokonując wyboru wersji biblioteki natywnej w czasie wykonywania programu.
.Net w wersji 4.0 wprowadził pojęcie Corupted Stare Exception. Wiedza o nich jest dość istotna, gdyż domyślnie nie są wyłapywane nawet przez ogólny blok catch(Exception), a także blok finally.
Tworzenie obiektów w .Net jest utożsamiane z zarezerwowaniem dla nich pewnej pamięci, a następnie wykonaniem konstruktora(domyślnego lub parametryzowanego). Jednak w pewnych przypadkach wykonywanie kodu zawartego w konstruktorze może być niepożądane. Istnieje jednak sposób by tego uniknąć.
Zdarzenia stanowią bardzo wygodny mechanizm monitorowania stanu obiektów. W .NET można spotkać je na każdym kroku. Kontrolki zarówno w WinForms jak i WPF, posiadają wiele zdarzeń, często kilkadziesiąt. Niestety każda deklaracja zdarzenia pochłania zasoby. Nie ma to znaczenia gdy obiekt posiada tylko kilka zdarzeń ale może to być zauważalne dla skomplikowanych klas np. kontrolek w WinForms. Każda kontrolka eksponuje dziesiątki zdarzeń a użytkownicy zwykłe korzystają wyłącznie z kilku – rzadko ma miejsce s...
Sztuka programowania 4444 dni, 5 godzin, 6 minut temu 121 źrodło rozwiń
Istnieją 4 słowa kluczowe, o których istnieniu wie niewielu programistów C#: _arglist, _refvalue, _makeref, _reftype. Stanowią one jednak ciekawostkę, o której istnieniu warto mieć pojęcie. Oficjalna dokumentacja(C# Keywords) nie wspomina o nich. Można jednak szybko przekonać się o ich istnieniu, gdyż Visual Studio podświetla je podobnie jak inne słowa kluczowe.
Wystąpienie BadImageFormatException, wśród doświadczonych developerów, rodzi pytanie czy przez przypadek nie została załadowana zewnętrzna biblioteka w złej wersji- 32 lub 64 bitowej. Nie jest to jednak jedyna przyczyna występowania tego wyjątku.