Tworząc własny typ w większości przypadków definiujemy także dla niego funkcje równości. Mało kto wie jednak że C# oferuje aż 4 takie funkcje.
Strona głównaUżytkownik
pawelm | użytkownik
O zdarzeniach było już wielokrotnie na blogu. Pokazywałem różne sposoby wywołania zdarzeń. Najpopularniejszym chyba sposobem jest poniższy wzorzec:publicclass Person { publicevent EventHandler FirstNameChanged; virtualprotectedvoid OnFirstNameChanged(EventArgs e) { if (FirstNameChanged !=null) FirstNameChanged(this, e); } } Jeśli wielowątkowość wchodzi w grę wtedy lepiej napisać:publicclass Person { publicevent EventHandler FirstNameChanged; virtualprotectedvoid O...
Sztuka programowania 4411 dni, 7 godzin, 21 minut temu 99 źrodło rozwiń
Walidacja oparta o atrybuty walidacyjne jest w ASP.NET MVC świetnym rozwiązaniem - w standardowych rozwiązaniach sprawdza się znakomicie - jednak czasami, podczas pracy nad projektem dochodzimy do sytuacji, gdy zaczyna nam brakować standardowych atrybutów. W takim przypadku najczęściej warto stworzyć własny atrybut walidacyjny oraz jego obsługę. Nie jest to wcale takie trudne, co postaram się pokazać w niniejszym wpisie.Po pierwsze, atrybut walidacyjny Przykład - często zachodzi potrzeba sprawdzania wy...
Proces instalacji to czynność długotrwała. Dodatkowo wymaga on co jakiś czas uwagi, choćby po to, aby potwierdzić warunki licencji, lub wcisnąć przycisk Dalej, albo podjąć jakąś decyzję. Niniejszy artykuł opisuje co należy zrobić, aby przygotować instalację automatyczną, w pełni powtarzalną.
Bazy danych i XML 4417 dni, 7 godzin, 36 minut temu 58 źrodło rozwiń
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 4414 dni, 7 godzin, 23 minuty temu 121 źrodło rozwiń
W C# typy proste przekazywane są przez wartość. Oznacza to, że za każdym razem wszystkie bity są kopiowane. Ponadto jakiekolwiek operacje dokonywane na takim polu, nie są widoczne na zewnątrz, na przykład:internalclass Program { privatestaticvoid Increment( int value) { value++; } privatestaticvoid Main(string[] args) { int value =5; Increment(value); Console.WriteLine(value); } } Czasami zachodzi potrzeba przekazania wyniku z powrotem albo ze wz...
Praca z obiektami COM może być trudna i czasami frustrująca. Przykład:Worksheet sheet = excelApp.Worksheets.Open(...); // Jakaś logika. Odczytywanie lub modyfikacja arkusza itp.Marshal.ReleaseComObject(sheet); Marshal.ReleaseComObject(excelApp); O obiektach COM należy pamiętać, również po zakończeniu pracy z nimi – należy zwolnić wszelkie zasoby. Nie zawsze jest to proste i oczywiste. Powyższy kod spowoduje memory leak ponieważ Worksheets również musi zostać zwolniony. Metoda Open jest wywołana na ob...
Programowanie rozproszone 4428 dni, 4 godziny, 4 minuty temu 124 źrodło rozwiń
Zachęcam do przeczytania kolejnej części, tym razem o LINQ: http://msdn.microsoft.com/pl-pl/library/dobre-i-zle-praktyki-w-c-sharp–czesc-5.aspx
Sztuka programowania 4436 dni, 20 godzin, 27 minut temu 307 źrodło rozwiń
W dzisiejszym wpisie pokażę w jaki sposób za pośrednictwem Entity Framework możemy wywoływać procedury składowane zwracające wyniki w postaci wartości skalarnej lub poprzez parametr wyjściowy.
Od wersji SQL Server 2005 w języku T-SQL dostępne jest polecenie output. Możemy dołączyć je do instrukcji insert, update, delete lub merge w celu uzyskania informacji o rekordach przetworzonych w wyniku ich działania. Informacje te udostępniane są przez dwa zbiory danych: inserted oraz deleted – ich struktura odpowiada tabeli, na której wykonywana jest dana operacja.
Bazy danych i XML 4455 dni, 4 godziny, 46 minut temu 109 źrodło rozwiń
Pisane przez nas "biblioteki wielokrotnego użytku" mogą (a nawet: powinny być?) konfigurowalne. Konfiguracja musi być oczywiście rozprowadzana wraz z aplikacją korzystającą z takich bibliotek, więc obowiązkiem programisty aplikacji jest dołączenie do *config odpowiednich wpisów.
W poprzednim poście podałem krótki fragment kodu, który można było zoptymalizować. Wspomniałem o parametrze StringComparison, który zwykle sprawia problemy w zrozumieniu. W dzisiejszym wpisie postaram się wyjaśnić różnicę między poszczególnymi porównaniami. Dla przypomnienia istnieją następujące wartości StringComparison: 1. Ordinal – domyślna wartość. Znaki zamieniane są na wartości numeryczne i wtedy porównywane. Zdecydowanie najszybsza metoda jeśli chodzi o wydajność. 2. OrdinalIgnoreCase – tak ja...
Kod:if(anyText.ToLower()=="tekst") { Console.WriteLine("Zmienne takie same"); } Kod ma na celu sprawdzenie czy jakaś zmienna jest równa danemu strumieniowi znaków. Nie chcemy brać pod uwagę wielkości liter więc dlatego używamy funkcji ToLower. Zatem if zwróci true gdy anyText jest równy “tekst” lub “TEKST” itp. Rozwiązanie ma jedną wadę – tworzony jest nowy, tymczasowy string po wywołaniu metody ToLower. W powyższym przykładzie będziemy mieli zatem 3 obiekty: anyText, obiekt dla “tekst” oraz obie...
Nie wiem jak Was, ale mnie osobiście irytuje zdarzenie w którym na górnej belce aplikacji pojawia się napis , a sam program wygląda jakby się gdzieś po drodze pogubił... Generalnie taki stan rzeczy może być spowodowany wieloma różnymi aspektami, choć zasadniczo w tym przypadku najczęściej można wskazać dwie przyczyny. Trzeba niestety tu otwarcie przyznać, że w głównej mierze są one spowodowane źle napisanym kodem przez programistów tychże aplikacji. Po pierwsze, w każdym programie może po prostu pójść c...
Architektura 4463 dni, 6 godzin, 53 minuty temu 118 źrodło rozwiń
Kolejna cześć artykułu z cyklu “Dobre i złe praktyki”: http://msdn.microsoft.com/pl-pl/library/dobre-i-zle-praktyki-w-c-sharp–czesc-4.aspx
Sztuka programowania 4464 dni, 6 godzin, 50 minut temu 112 źrodło rozwiń
Kolejna część artykułu z cyklu dobre i złe praktyki. Zapraszam do lektury: http://msdn.microsoft.com/pl-pl/library/dobre-i-zle-praktyki-w-c-sharp–czesc-3.aspx
Sztuka programowania 4465 dni, 9 godzin, 23 minuty temu 175 źrodło rozwiń
Dzisiaj przykład skryptu SQL, który pozwala na serwerze MSSQL 2008r2 odtworzyć kopię dowolnej bazy danych, umieszczoną w dowolnej, dostępnej dla serwera SQL lokalizacji, na dowolną bazę danych serwera. Skrypt wymaga podania dwóch parametrów (które należy wprowadzić do dwóch, zadeklarowanych jako pierwsze, zmiennych) tj. ścieżki do kopii bezpieczeństwa oraz nazwy bazy danych. Wszystkie pozostałe informacje skrypt pobiera sobie automatycznie, czyli ...
Bazy danych i XML 4470 dni, 16 godzin, 26 minut temu 92 źrodło rozwiń
Tym artykułem rozpoczynamy serię wpisów dotyczących jednego z API wchodzących w skład .NET Framework – WCF (Windows Communication Foundation). Dowiesz się czym jest WCF i „z czym się go je”. Seria artykułów o WCF pomoże Ci się przygotować do egzaminu 70-503. Wpisy będą doskonałym materiałem do powtórki i przypomnienia sobie zagadnień – więc zapraszam do śledzenia kodzimy.net WCF? WTF! WCF (Windows Communication Foundation) – jest to jedno z API .NET Framework. Dzięki WCF będziesz w stanie p...
Projektowanie interfejsu 1/3 Dziś nie będzie kody w tym i kolejnych postach skupie się na zasadach jakie obowiązują przy projektowaniu interfejsu dla aplikacji Metro. W dzisiejszy poście skupie się na temacie nawigacji pomiędzy stronami i elementami jakie wchodzą w skład nawigacji. Pisząc na temat nawigowania w aplikacjach metro dla systemu Windows 8 trzeba rozpocząć od przedstawienia dwóch podstawowych wzorców nawigacyjnych.Układ hierarchiczny Jest jednym z najczęściej używanych systemów nawiga...
Ponieważ ostatnio zajmuję się ASP.NET postanowiłem napisać parę postów odnośnie wiązania danych. Tak więc lecimy: ASP.NET idzie nam na rękę jeśli chodzi o połączenia z bazami danych. Nie trzeba pisać tak dużo zbędnego kodu jak to miało miejsce wcześniej. W tym poście zaprezentuję kontrolkę SqlDataSource która umożliwia uzyskanie dostępu do dowolnego źródła danych (należącego do grupy dostawców ADO.NET). Domyślnie kontrolka ta posiada możliwość współpracy z dostawcami ODBC, OLE DB, SQL Server, Oracle,...