dotnetomaniak.pl - Artykuły z tagiem C#

Kolejna część artykułu o dobrych i złych praktykach. Zapraszam do lektury: http://msdn.microsoft.com/pl-pl/library/dobre-i-zle-praktyki-w-c-sharp–czesc-6.aspx

Dziel się z innymi:
Piotr Zieliński  » Dobre i złe praktyki w C# – część VI

O interfejsach napisano już wiele artykułów. Postaram się dlatego podejść do tego zagadnienia od innej strony. Na początek pytanie: czym różni się metoda wirtualna od implementacji metody z interfejsu? Mogło by się zdawać, że są to bardzo podobne operacje.

Tagi: .Net, C#, interface
Dziel się z innymi:
Programowanie w .NET: O interfejsach raz jeszcze

Sztuka programowania 2891 dni, 18 godzin, 38 minut temu psz750 197 źrodło rozwiń

Artykułów na temat Garbage Collector zostało napisanych już wiele. Dlatego nie będę przedstawiać dokładnie zasady jego działania, a raczej praktyczne wskazówki implementacji finalizerów i wzorca IDisposable.

Tagi: .Net, C#, IDisposable
Dziel się z innymi:
Programowanie w .NET: Zarządzanie pamięcią w .NET

Inne 2892 dni, 9 godzin, 11 minut temu psz750 216 źrodło rozwiń

Funkcja GetHashCode używana jest tylko i wyłącznie w przypadku korzystania z kolekcji typu klucz wartość jak HashSet lub Dictionary. Funkcja ta nie jest tak oczywista jak się to zdaje i napisanie poprawnej jej wersji sprawia wiele problemów.

Tagi: .Net, C#, gethashcode
Dziel się z innymi:
Programowanie w .NET: Pułapki podczas implementacji GetHashCode

Inne 2892 dni, 9 godzin, 11 minut temu psz750 90 źrodło rozwiń

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.

Tagi: .Net, C#, Equality
Dziel się z innymi:
Programowanie w .NET: Zrozumieć Equality

Inne 2892 dni, 9 godzin, 11 minut temu psz750 111 źrodło rozwiń

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...

Tagi: C#, events
Dziel się z innymi:
Piotr Zieliński » Wywoływanie zdarzeń za pomocą metod rozszerzających

Sztuka programowania 2893 dni, 1 godzinę, 26 minut temu pzielinski 99 ź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.

Tagi: C#, CLI
Źródło: jasica.net
Dziel się z innymi:
Nieudokumentowane słowa kluczowe C#

Inne 2894 dni, 8 godzin, 20 minut temu vveasel 308 ź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...

Tagi: C#, EventHandler
Dziel się z innymi:
Piotr Zieliński » Optymalizacja klas z wieloma zdarzeniami – EventHandlerList

Sztuka programowania 2896 dni, 1 godzinę, 28 minut temu pzielinski 120 źrodło rozwiń

Chce z poziomu kodu czytać konfigurację z pliku app.config (projekty desktopowe) lub Web.config (projekty webowe). Na przykład kolekcję zaufanych applikacji, które mogą korzystać z naszego serwisu. Do tego trzeba stworzyć 3 klasy dziedziczące po ConfigurationSection, ConfigurationElementCollection oraz ConfigurationElement.

Tworzenie własnej ConfigurationSection | Show me the code

Windows 2897 dni, 16 godzin, 5 minut temu http://krzysztofmorcinek.wo... 52 źrodło rozwiń

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.

Źródło: jasica.net
Dziel się z innymi:
BadImageFormatException - problem z 32 i 64 bitowymi bibliotekami po raz N-ty?

Inne 2897 dni, 16 godzin, 5 minut temu vveasel 84 źrodło rozwiń

Kod: sealed class FolderFilesMappings : Dictionary { // brak specyficznej implementacji czy rozszerzen } Powyższy kod przedstawia klasę, która jest wrapperem dla słownika. Rozwiązanie na pierwszy rzut oka wygląda ładnie ale osobiście zastanowiłbym się nad sensem pisania dodatkowej klasy, która tak naprawdę nic nie robi. Klasy powinny zawierać jakieś dane lub logikę. Powyższy fragment nie rozszerza funkcjonalności – wyłącznie daje opisową nazwę i skraca składnie – pisanie za każdym...

Tagi: C#, dictionary
Dziel się z innymi:
Piotr Zieliński » Code review: słowniki i podklasy

Sztuka programowania 2897 dni, 16 godzin, 5 minut temu pzielinski 157 źrodło rozwiń

W LINQ mamy dwie metody First() oraz Single(). Obie metody zwracają po jednym rekordzie. Jaka jest więc między nimi różnica? Zobaczmy na kawałek kodu i jego reprezentację w bazie MS SQL.

Tagi: .Net, C#, Linq
Dziel się z innymi:
Programowanie w .NET: Czym się różni Single od First w LINQ

Inne 2900 dni, 10 godzin, 28 minut temu psz750 225 źrodło rozwiń

Extension Methods można wykorzystać nie tylko do dodawania metod do istniejących klas, ale także jako najprostszy mechanizm mapujący. Nie musimy tworzyć całej biblioteki do mapowania, wystarczy dodać do klasy odpowiednią metodę np. Map.

Dziel się z innymi:
Programowanie w .NET: Mapowanie obiektów - Extension Methods

Inne 2900 dni, 10 godzin, 28 minut temu psz750 269 źrodło rozwiń

Zaczynamy od próbki kodu:staticclass StringExtensions { publicstaticvoid SayHello(thisstring str, string message) { Console.WriteLine(string.Format("Hello:{0}", message)); } } internalclass Program { privatestaticvoid Main(string[] args) { string str =null; str.SayHello("Piotr"); } } Co według Was wydarzy się po uruchomieniu programu? Na pierwszy rzut oka może wydawać się, że wystąpi NullReferenceException ponieważ wywołujemy metodę na nieistniejącym obi...

Dziel się z innymi:
Piotr Zieliński » Code review: method extensions oraz call\callvirt

Inne 2901 dni, 1 godzinę, 55 minut temu pzielinski 78 ź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...

Tagi: C#, out, Ref
Dziel się z innymi:
Piotr Zieliński » C#: ref vs. out

Inne 2904 dni, 17 godzin, 17 minut temu pzielinski 203 źrodło rozwiń

O modyfikatorze sealed już kiedyś pisałem – dzięki niemu możemy zabronić dziedziczenia po danej klasie:sealedclass SealedClass { } class ChildClass:SealedClass // BLAD{ } Moim zdaniem jest on niedoceniany i zbyt rzadko używany.  Może dlatego, że nie wnosi on nic nowego do funkcjonalności czy łatwości w pisaniu kodu a “jedynie” stanowi ważny element w projekcie oraz w tym, jak inni użytkownicy z takiej biblioteki będą korzystać. Pierwszą zaletą SEALED jest wydajność. Oczywiście w większości przypadkó...

Tagi: C#, sealed
Dziel się z innymi:
Piotr Zieliński » Dlaczego warto używać modyfikatora sealed

Sztuka programowania 2909 dni, 14 godzin, 5 minut temu pzielinski 239 źrodło rozwiń

VSpniff is a simple tool to find missing references to files in the VS project. You could avoid excluded files problem after bad merge or something else.

Źródło: tsubik.com
Dziel się z innymi:
[EN] Keep your files in VS project included. Fast and elegant solution

Narzędzia 2909 dni, 14 godzin, 5 minut temu tsubik 74 źrodło rozwiń

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...

Tagi: C#, COM
Dziel się z innymi:
Piotr Zieliński » Code Review: obiekty COM oraz zasada “double dot”.

Programowanie rozproszone 2909 dni, 22 godziny, 9 minut temu pzielinski 122 źrodło rozwiń

Dziś trochę o podstawach C# ale myślę, że wszyscy znajdą coś wartościowego w tym wpisie bo chcę pokazać jak to działa od środka CLR. Na początek przykład boxing’u:staticvoid Main(string[] args) { int value =3; object referencedType = value; } Boxing to nic innego jak utworzenie typu referencyjnego na podstawie value type. Object to typ referencyjny przechowywany na stercie, z kolei integer to zwykły value type przechowywany na stosie. Opisowo, boxing składa się z 3 operacji:Alokacja pamięci na s...

Tagi: boxing, C#, unboxing
Dziel się z innymi:
Piotr Zieliński » Boxing oraz unboxing–jak to działa od strony CLR

Sztuka programowania 2912 dni, 22 godziny, 41 minut temu pzielinski 131 źrodło rozwiń

Temat poświęcony jest zagadnieniu definiowania własnych funkcji w modelu koncepcyjnym Entity Framework oraz ich wykorzystania w zapytaniach LINQ to Entities.

Dziel się z innymi:
Entity Framework – własne funkcje w zapytaniach LINQ to Entities « Developer notes

Inne 2914 dni, 1 godzinę, 11 minut temu psz750 207 źrodło rozwiń

1 2... 42 43 44 45 46 47... 69 70
AsyncExpert

Najaktywniejsi

1
(32 895,6)
2
(32 816,53)
3
(27 178,29)
4
(21 178,88)
5
(20 336,33)
6
(13 018,14)
7
(10 512,54)
8
(9 775,28)
9
(8 433,28)
10
(6 822,96)
11
(6 214,22)
12
(5 393,84)
13
(4 152,41)
14
(4 026,73)
15
(3 908,07)
16
(3 599,64)
17
(3 448,35)
18
(3 318,39)
19
(3 224,66)
20
(3 183,43)