dotnetomaniak.pl - Artykuły z tagiem C#

Dziś kolejny post z cyklu zastosowanie słowa kluczowego dynamic. Ostatnio pisałem o ExpandoObjet, który jest dynamicznym kontenerem na metody i dane. DynamicObject pozwala z kolei tworzyć wrappery na różne klasy. Zacznijmy od przykładu:internalclass Program { publicclass CustomWrapper : DynamicObject { publicoverridebool TryGetMember(GetMemberBinder binder, outobject result) { result ="Hello World"; returntrue; } publicoverridebool TrySetMem...

Tagi: C#, dynamicobject
Dziel się z innymi:
Piotr Zieliński » Zastosowanie dynamic: DynamicObject

Sztuka programowania 4142 dni, 17 godzin, 2 minuty temu pzielinski 92 źrodło rozwiń

Każdy dobry (ten zły także) warsztat nie obędzie się bez odpowiednich narzędzi. Oto zestaw narzędzi, których ja używam.

Źródło: jakubflorczyk.pl
Dziel się z innymi:
Jakub Florczyk » Narzędzia developerskie Windows Phone

W poprzednim wpisie omówiłem kilka mechanizmów walidacji wprowadzanych danych jakie oferuje technologia WPF. Dzisiaj rozszerzę ten temat o kwestie związane z formatowaniem danych oraz konwersją typów. Często zdarza się sytuacja, w której prezentując użytkownikowi pewne dane chcemy określić dla nich własny format. Równie często konieczne jest skonwertowanie wartości wprowadzonej przez użytkownika na docelowy typ danych.

Dziel się z innymi:
WPF – formatowanie danych oraz konwersja typów « Developer notes

Inne 4144 dni, 20 godzin, 37 minut temu psz750 78 źrodło rozwiń

Kiedyś już wspomniałem o słowie kluczowych dynamic. W tym i następnych wpisach chciałbym przedstawić praktyczne zastosowanie tego mechanizmu. Na koniec wyjaśnię, jak dynamic jest zaimplementowany przez CLR i jak bardzo spowalnia aplikację… Programiści używający ASP.NET MVC z pewnością rozpoznają zasadę działania ExpandoObject. Klasa umożliwia tworzenie dynamicznych kontenerów. Na przykład:privatestaticvoid Main(string[] args) { dynamic bag =new ExpandoObject(); bag.FirstName ="Piotr"; bag.LastN...

Dziel się z innymi:
Piotr Zieliński » Zastosowanie dynamic: ExpandoObject

Sztuka programowania 4144 dni, 20 godzin, 37 minut temu pzielinski 107 źrodło rozwiń

Kilka postów wcześniej pisałem o różnicach między const a read-only. Dzisiaj  chciałbym pokazać scenariusz, który pokazuje kiedy NIE używać słowa const. Const jest doskonałym rozwiązaniem dla liczb, które są po prostu ZAWSZE stałe. Przykład? Liczba PI ma jedną wartość i oczywiście nigdy się nie zmieni. Istnieją jednak przypadki gdzie liczby w kodzie są zastępowane stałymi co nie zawsze jest dobrym wzorcem. Rozważmy, że mamy klasę przechowującą pewne parametry algorytmu:namespace ClassLibrary1 { publ...

Tagi: C#, readonly, stałe
Dziel się z innymi:
Piotr Zieliński » Kiedy stałe (const) są złą praktyką?

Sztuka programowania 4148 dni, 12 godzin, 45 minut temu pzielinski 152 źrodło rozwiń

W jednym z ostatnich projektów klient zażyczył sobie sprawdzenie polubienia strony z poziomu aplikacji bez autoryzacji użytkownika. Poniżej rozwiązanie tego problemu z użyciem biblioteki Facebook C# SDK.

Tagi: .Net, API, C#, Facebook, JSON
Źródło: jakubflorczyk.pl
Dziel się z innymi:
Jakub Florczyk » Aplikacje Facebook – sprawdzanie “like” dla strony

Web 4150 dni, 3 godziny, 36 minut temu http://jakub-florczyk.myope... 86 źrodło rozwiń

Dziś trochę o formatowaniu tekstu. Można je wykonać na wiele sposób. Osoby nie znające powyższych interfejsów zwykle tworzą własne metody zwracające wynik w odpowiednim formacie. Załóżmy, że mamy następującą klasę:class PhoneNumber { privatereadonlystring _extension; privatereadonlystring _phoneNumber; public PhoneNumber(string extension,string phoneNumber) { _extension = extension; _phoneNumber = phoneNumber; } } Na przykładzie powyższej klasy będę starał się po kolei pr...

Piotr Zieliński » Formatowanie tekstu oraz atrybuty IFormatProvider, IFormattable, and ICustomFormatter

Sztuka programowania 4150 dni, 3 godziny, 36 minut temu pzielinski 103 źrodło rozwiń

W C# istnieje wiele typów tablic. W poście chciałbym skupić się na ich wydajności. Rozważę następujące przypadki: - tablica wielowymiarowa, - tablica tablic tzw. jagged. - tablica unsafe. Tablice wielowymiarowe w c# są najwolniejsze ponieważ CLR nie wykonuje wszystkich optymalizacji. Zacznijmy jednak od testu:internalclass Program { privatestaticvoid DoSomething(int arg) { } privatestaticvoid MultiDimensionalArrayTest(int xCount, int yCount) { int[,] array =newint[xCount, ...

Dziel się z innymi:
Piotr Zieliński » Tablice danych: wydajność

Sztuka programowania 4153 dni, 23 godziny, 41 minut temu pzielinski 152 źrodło rozwiń

Jedną z podstawowych kwestii przy budowie interfejsu użytkownika jest walidacja wprowadzanych danych. WPF w tym obszarze oferuje kilka mechanizmów. Dzisiaj zajmę się omówieniem trzech rozwiązań: walidacja poprzez implementację interfejsu IDataErrorInfo (DataErrorValidationRule), walidacja za pomocą wyjątków (ExceptionValidationRule) oraz walidacja przy wykorzystaniu własnych obiektów reguł (ValidationRule).

Dziel się z innymi:
WPF – walidacja danych « Developer notes

Inne 4153 dni, 23 godziny, 41 minut temu psz750 234 źrodło rozwiń

Manipulując stanem encji, należy pamiętać o dwóch zasadach. Dotyczą one zapisu zmian do bazy danych po zakończeniu pracy z obiektami i ustawianiu im stanów.

Dziel się z innymi:
Programowanie w .NET: O czym pamiętać przy zmianie stanu encji w EF

Inne 4155 dni, 23 godziny, 44 minuty temu psz750 159 źrodło rozwiń

Encja pobrana z bazy za pomocą EntityFramework może mieć jeden z następujących stanów: Added - encja jest śledzona przez kontekst, ale nie istnieje w bazie danych Unchanged - encja jest śledzona przez kontekst oraz istnieje w bazie danych. Wartości pól są takie same w bazie jak i obiekcie (nie dokonano żadnych zmian).Modified - encja jest śledzona przez kontekst, istnieje w bazie danych. Dokonano zmian w jej polach Deleted - encja jest śledzona przez kontekst i istnieje w bazie danych. Została jednak ozn...

Dziel się z innymi:
Programowanie w .NET: Entity Framework - Graph Object State

Inne 4155 dni, 23 godziny, 44 minuty temu psz750 93 źrodło rozwiń

Czasami metody mają zbyt dużo parametrów przez co wywołanie ich jest niewygodne i może zajmować nawet dwie linie. Oczywiście pierwsza rzecz, którą powinniśmy zrobić jest sprawdzenie czy metoda czasami nie wykonuje zbyt wielu operacji tzn. przestrzega zasadę Single Responsibility.  Jeśli mamy pewność, że metoda przestrzega wszelkie zasady i jest dobrze zaprojektowana wtedy trzeba pomyśleć jak zmniejszyć liczbę parametrów. W poście przedstawię kilka prób uzyskania takiego efektu. Logiczne wydaje się, utwo...

Tagi: C#, parametry
Dziel się z innymi:
Piotr Zieliński » Metoda z wieloma parametrami

Sztuka programowania 4155 dni, 23 godziny, 44 minuty temu pzielinski 139 źrodło rozwiń

Dziś prosta zasada przekazywania parametrów ale jednak często łamana. Kod:privatestaticvoid Display(string[] strings) { foreach (string text in strings) { Console.WriteLine(text); } } Powyższa metoda ma za zadanie wyświetlenie wyłącznie elementów. Parametr wejściowy (tablica string’ów) jest zbyt specyficzny i nie pozwala na przekazanie wszystkich zbiorów danych. Na przykład poniższy kod nie skompiluje się:List

Tagi: C#, parametry
Dziel się z innymi:
Piotr Zieliński » Code Review: przekazywanie parametrów

Sztuka programowania 4158 dni, 20 godzin, 34 minuty temu pzielinski 193 źrodło rozwiń

Przyjrzyjmy się następującemu fragmentowi kodu:publicclass SampleClass { privateint _value =10; } W rzeczywistości zostanie wygenerowany konstruktor, ustawiający pole value na 10. Kod IL:.method public hidebysig specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 L0000: ldarg.0 L0001: ldc.i4.s 10 L0003: stfld int32 SampleClass::value L0008: ldarg.0 L0009: call instance void [mscorlib]System.Object::.ctor() L000e: nop L_000f: ret } Na...

Tagi: C#, konstruktor, pola
Dziel się z innymi:
Piotr Zieliński » Inicjalizacja pól a konstruktory

Sztuka programowania 4162 dni, 3 godziny, 20 minut temu pzielinski 63 źrodło rozwiń

W dzisiejszym wpisie chciałbym przyjrzeć się trochę bardziej tablicom i interfejsom jakie implementują. Zaglądając do dokumentacji dowiemy się, że Array implementuje:[SerializableAttribute] [ComVisibleAttribute(true)] publicabstractclass Array : ICloneable, IList, ICollection, IEnumerable, IStructuralComparable, IStructuralEquatable IEnumerable nie powinno wydawać się dziwne ponieważ oczekujemy od tablic możliwości dostępu do elementów poprzez foreach:int[] numbers =new[] { 5, 2, 52, 5 }; foreach...

Tagi: C#, tablice
Dziel się z innymi:
Piotr Zieliński » Tablice – rzutowanie

Inne 4165 dni, 3 godziny, 47 minut temu pzielinski 106 źrodło rozwiń

Dziś mały eksperyment. Chciałbym pokazać jaki jest faktycznie spadek wydajności jeśli zachodzi potrzeba boxing’u i unboxing’u. Wiele o tym ostatnio pisałem ale nie pokazałem najważniejszego – liczb opisujących wydajność.  Na początek porównanie boxing z unboxing:privatestaticvoid TestBoxingAndUnboxing() { object boxedValue =null; // boxing Stopwatch stopwatch = Stopwatch.StartNew(); for (int i =0; i < iterations;="" i++)="" {="" int="" unboxed="(int)" boxedvalue;="" }="" stopwatch.stop();="" ...

Tagi: boxing, C#, unboxing
Dziel się z innymi:
Piotr Zieliński » Boxing, unboxing–test

Sztuka programowania 4168 dni, 14 godzin, 12 minut temu pzielinski 90 źrodło rozwiń

SQL Serwer umożliwia zdefiniowanie procedury składowanej, której dowolny parametr (lub parametry) może służyć do zwracania jakichś informacji w ramach tej procedury uzyskanych. Oprócz tego procedura może zwracać także jakiś zestaw wyników w postaci tabelarycznej (wystarczy w jej treści wykonać select), co więcej takich zestawów może być więcej niż jeden. Połączenie tych dwóch cech pozwala tworzyć rozbudowane procedury, które mogą zwracać wiele zestawów wyników i dodatkowo jakieś informacje w parametrach ...

Me z .NET tete-a-tete » Pan Hilary rwie włos z głowy – gdzie parametr jest wyjściowy!

Bazy danych i XML 4170 dni, 17 godzin, 13 minut temu PaSkol 96 źrodło rozwiń

Jeśli ktoś (tak jak ja) pierwsze kroki z XNA stawiał w Windows Phone, to możliwe, na w swoich projektach założył dość sztywne reguły, np: rozdzielczość urządzenia to 800×480 pikseli. Tak właśnie zrobiłem ja. Na jakiś czas (około 1 rok) było to ok, bo wszystkie telefony z Windows Phone pracowały właśnie w tej rozdzielczości. Ale czasy się zmieniły...

XNA – skalowanie i centrowanie | Wojciech Poniatowski [PL]

Inne 4171 dni, 53 minuty temu poniat 50 źrodło rozwiń

Łapanie wyjątków w metodzie asynchronicznej nie jest niczym skomplikowanym. Należy tylko pamiętać o tym, iż mamy do czynienia z różnymi możliwymi scenariuszami wyjątków. Metoda oznaczona słowem kluczowym async zawiera przeważnie jedną lub więcej wywołań metod ze słowem kluczowym await. Await stoi przed metodą zwracającą typ Task. Pierwsza zasada to ta, iż await nie może się pojawić się w bloku catch lub finally.

Tagi: .Net, async, await, C#
Dziel się z innymi:
Programowanie w .NET: async, await - przechwytywanie wyjątków

Inne 4171 dni, 18 godzin, 29 minut temu psz750 144 źrodło rozwiń

Zaczniemy znów od kawałka kodu. Przeanalizujmy w jaki sposób wykonywana jest powyższa metod...

Tagi: .Net, async, await, C#
Dziel się z innymi:
Programowanie w .NET: async, await - przetwarzanie metody asynchronicznej

Inne 4171 dni, 15 godzin, 33 minuty temu psz750 454 źrodło rozwiń

1 2... 43 44 45 46 47 48... 72 73

Najaktywniejsi w tym miesiącu