dotnetomaniak.pl

dotnetomaniak.pl - Artykuły z tagiem C#

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 2004 dni, 57 minut temu psz750 197 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 2004 dni, 15 godzin, 30 minut temu psz750 203 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 2004 dni, 15 godzin, 30 minut temu psz750 80 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 2004 dni, 15 godzin, 30 minut temu psz750 111 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 2005 dni, 7 godzin, 45 minut temu pzielinski 98 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 2006 dni, 14 godzin, 39 minut temu vveasel 306 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 2008 dni, 7 godzin, 47 minut temu pzielinski 120 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 2009 dni, 22 godziny, 24 minuty temu http://krzysztofmorcinek.wo... 52 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 2009 dni, 22 godziny, 24 minuty temu vveasel 83 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 2009 dni, 22 godziny, 24 minuty temu pzielinski 157 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 2012 dni, 16 godzin, 47 minut temu psz750 225 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 2012 dni, 16 godzin, 47 minut temu psz750 266 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 2013 dni, 8 godzin, 14 minut temu pzielinski 77 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 2016 dni, 23 godziny, 36 minut temu pzielinski 196 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 2021 dni, 20 godzin, 24 minuty temu pzielinski 239 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 2021 dni, 20 godzin, 24 minuty temu tsubik 74 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 2022 dni, 4 godziny, 28 minut temu pzielinski 122 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 2025 dni, 4 godziny, 59 minut temu pzielinski 129 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 2026 dni, 7 godzin, 30 minut temu psz750 206 rozwiń

Rozważmy, następujący kawałek kodu:struct Color { publicstaticexplicitoperator Color(short value) { // jakas tam konwersja - nieistotne dla przykladureturnnew Color {R = value}; } publicshort R, G, B; } Co w nim nie tak? Operatory nie są wspierane przez wszystkie języki. Podczas kompilacji wszystkie operatory zamieniane są na zwykłe metody. Na przykład operator rzutowania implicit zostanie zamieniony na op_Explicit oraz oznaczony  przez CLR specjalnym atrybutem specialname:.class seque...

Dziel się z innymi:
Piotr Zieliński » Code review: operator rzutowania

Sztuka programowania 2028 dni, 5 godzin, 41 minut temu pzielinski 146 rozwiń

1 2... 36 37 38 39 40 41... 63 64
Szkolenia SecurITum

maj

26.

wrzesień

21.
Dev#
Gdańsk, Stary Maneż
Dodaj nowe Zobacz wszystkie

Najaktywniejsi

1

Paweł Łukasik (32 867,57)

2

macko (32 816,53)

3

pzielinski (27 178,29)

4

gordon_shumway (21 178,88)

5

paduda (20 336,33)

6

psz750 (13 018,14)

7

rroszczyk (10 391,37)

8

Damian (9 515,21)

9

danielplawgo (7 311,04)

10

arek (6 807,95)

11

burczu (6 214,22)

12

PaSkol (5 393,84)

13

lukaszgasior (4 097,38)

14

jj09 (3 798,06)

15

dpawlukiewicz (3 581,94)

16

spetz (3 418,34)

17

AdrianBystrek (3 330,83)

18

jedmac (3 318,39)

19

http://jakub-flor... (3 224,66)

20

CaMeL (2 954,87)