11 brudnych sekretów Visual Studio

30 marca 2008 16:47 w kategorii: pro
Podobnych zestawień można znaleźć w sieci całe mnóstwo. Jednakowoż dorzucę swoje 11 kopiejek w postaci 11 punktów, o których dowiadywałem się z czasem i częstokroć niespodziewanie. Dlaczego 11? Bo nie mogłem się zdecydować na wykreślenie któregokolwiek z nich z listy. Poza tym Rammstein na każdym albumie zamieszcza 11 piosenek, które to stwierdzenie poddaje w wątpliwość sens jakichkolwiek związków przyczynowo-skutkowych zamieszczonych na niniejszym blogu.Ale nieważne. Tak czy siak bez ... [More]

Lambda expressions - explained

26 marca 2008 14:05 w kategorii: pro
Lambda expressions - brzmi groźnie. To właśnie tym elementem języka C# 3.0 straszono programistów (a raczej programiści straszyli się nawzajem) jeszcze dobre kilkanaście miesięcy przed premierą .NET 3.5. A bo to "funkcyjne", a bo to "nowe", "nieznane" i trudne do pojęcia. Jak za chwilę zobaczymy - nic bardziej mylnego. Jeżeli kiedykolwiek korzystałeś z delegatów, to umiesz korzystać także z metod anonimowych. Jeżeli umiesz korzystać z metod anonimowych, to... to są właśnie wyrażenia lambda, tylk... [More]

Metody get_ i set_

22 marca 2008 13:11 w kategorii: pro
Tagi: ,
Właściwości (properties) to przyjemny mechanizm do zapewniania enkapsulacji, czyli jednej z najważniejszych cech programowania obiektowego. Przyjemniejszy niż zwykłe metody zwane "getters & setters". Zwrócę jednak uwagę na ciekawy fakt (zapewne znany większości czytelników, ale...). Popatrzmy na następujący kod: 1: private int _number; 2: public int Number 3: { 4: get { return _number; } 5: set { _number = value; } 6: } 7: 8: public int get_Number() 9: { 10: ... [More]

Oceny postów

20 marca 2008 09:06 w kategorii: priv
Tagi:
Właśnie włączyłem mozliwość oceniania postów na blogu - to pozwoli mi podążać w odpowiednim kierunku i wybierać najbardziej pożądane tematy. Let the rating begin!

Zagadka abstrakcyjnie zapieczętowana

19 marca 2008 13:45 w kategorii: pro
Tagi: ,
Czy wiemy co to "abstract class"? WIEMY! A wiemy co to "sealed class"? WIEMY! Teoretycznie - dwa przeciwieństwa. Jedno zabrania tworzenia instancji klasy, drugie - zabrania dziedziczenia z klasy.Czy spotkał się ktoś kiedyś z klasą zadeklarowaną w ten sposób? 1: abstract sealed class AbstractSealed 2: { 3: }Kompilator naturalnie zgłosi sprzeciw. Jak więc możliwe jest uzyskanie poniższego efektu?Pierwsza poprawna deklaracja klasy AbstractSealed umieszczona w komentarzach do tego posta zostan... [More]

Oto praktyczny przykład użycia wyrażeń lambda i metod rozszerzających, który lekko i prymitywnie "ociera się" o programowanie aspektowe i imituje jego podstawowe założenia:Najpierw tworzymy klasę zawierającą roszerzenia dla windowsowych formatek (ewentualnie naszej klasy bazowej): 1: public static class FormExtensions 2: { 3: public static void SetWaitingCursorFor(this Form instance, Action operation) 4: { 5: Cursor currentCursor = instance.Cursor; 6: instance... [More]

W dobie tak potężnych narzędzi jak Visual Studio programiści często zdają się całkowicie na ich funkcjonalność. Jedną z (wspaniałych zresztą) cech współczesnych IDE jest Intellisense. Czy wyobraża ktoś sobie pisanie kodu bez podpowiedzi? Zobaczmy jednak, że nie zawsze można na tym elemencie polegać w 100% ze względu na "konfigurowalność" nawet tego mechanizmu VS.Dla przykładu załóżmy dwie solucje (w C# nie wystarczą 2 osobne projekty w jednej solucji, w innych językach nie sprawdzałem): ClassLib... [More]

Czasami zdarza się, że jesteśmy świadomi istnienia jakiejś funkcjonalności, jednak wredny twórca biblioteki bezwstydnie ją przed nami ukrył. A my ją odkryliśmy na przykład przy pomocy Reflectora.Zasymulujmy taką sytuację. Wyobraźmy sobie bibliotekę z klasą Jarek oznaczoną jako internal. Klasa Jarek z kolei chowa przed nami bardzo ciekawą funkcjonalność - zakładanie konta w banku za pośrednictwem nieistotnej dla nas klasy Bank: 1: namespace JarekLibrary 2: { 3: internal class Jarek 4: {... [More]

6 marca w Warszawie miała miejsce konferencja z cyklu Heroes Happen Here. Okazja: premiera trzech produktów Microsoft (Visual Studio 2008, Windows Server 2008 oraz Sql Server 2008). Całość składała się z dziesięciu dużych sesji podzielonych na dwie grupy: dev i itpro. Wysłuchałem wszystkich pięciu wykładów dla programistów i oto moje wrażenia (nie tylko zresztą moje - konfrontowałem je z kilkoma znajomymi na pokonferencyjnym browarku i w większości się zgadzaliśmy).Wrażenia ogólneZainteresowanie... [More]

"Zwijanie" plików w Visual Studio

4 marca 2008 20:49 w kategorii: pro
Zdarza się, że mamy w projekcie grupę plików powiązanych ze sobą logicznie. Na przykład - jeden wygenerowany automatycznie i drugi uzupełniający go własnoręcznie napisanym kodem. Przykładem "z życia" są tu klasy form z .NET, gdzie to Visual Studio standardowo pokazuje swoją ciekawą funkcjonalność "zwijania" grupy powiązanych plików. Niestety, takie zachowanie nie jest dostępne w żaden znany mi sposób z poziomu interfejsu użytkownika. Jak więc wykorzystać ten trik we własnych programach?Zamykamy ... [More]

Numerologia w .NET

1 marca 2008 17:41 w kategorii: pro
Tagi:
Wraz z pojawianiem się kolejnych wersji .NET do świata programistów wchodziło coraz większe zamieszanie. Co oznacza każdy następny numerek, jakie zmiany wnosi, jak się owe zmiany mają do poprzedników? Przykładowy fakt, że piszemy program używając Visual Studio 2008 w języku C# 3.0 i korzystając jednoczeście z bibliotek w wersjach 2.0, 3.0 i 3.5, a o jego poprawne działanie dba CLR w wersji 2.0.50727 może nieźle namieszać. Szczególnie u początkujących developerów.Dlatego też, tak jak zapowiedział... [More]