TomaszSmykowski
2019-03-07 14:53
Tenonymous

Dzięki! :) to już wystarczająca ilość materiałów, coś dla siebie z pewnością znajdę :D

Visual Code
2018-10-26 10:42

To może jeszcze jedna ciekawostka z c# ;)
Jest możliwość nadawania zabronionych identyfikatorów np. class, struct, int itd.

    // tylko w celach pokazowych, tzw. ficzer ma praktyczne zastosowanie opisane przez @Afish w komentarzach
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            var obj = new @class();
            [email protected]();
            Console.WriteLine($"Nazwa klasy: {obj.GetType()}.");
        }
    }

    class @class
    {
        public void @struct()
        {
            Console.WriteLine("4programmers");
        }
    }

Rezultat:

Hello World!
4programmers
Nazwa klasy: class.

#csharp

somekind

Ficzer w języku (jeśli używany ze zrozumieniem) nie jest problemem. Słowa rak i malaria dotyczyło używania tego na siłę w kodzie, tak jak w przykładzie.

Visual Code

@somekind Kod nie miał za zadanie pokazać przykładowe użycie, tylko efekt zastosowania tego ficzera. Według mnie spec @Afish ma tutaj 100% racji. Myślę, że wypowiedzi w stylu ktoś tego używa w czysto siszarpowych projektach, ale to chyba niezbyt dobrze świadczy wywodzi się z niezrozumienia intencji twórców języka c#.

Visual Code
2018-07-23 20:39

Niskiej jakości wpis o currying w c#.

        public static Func<T1, Func<T2, R>> Curry<T1, T2, R>(Func<T1, T2, R> func)
        {
            return x => y => func(x, y);
        }

Przykładowa funkcja, która służy do rozwijania funkcji (currying), w tym przypadku dwuparametrowych, czyli rozłożyć funkcje na takie, które przyjmują tylko jeden argument.

public static Func<X, Z> Compose<X, Y, Z>(Func<X, Y> f, Func<Y, Z> g)
        {
            return x => g(f(x));
        }

Potrzebujemy tego gdy np. chcemy zrobić kompozycje z tych funkcji, albo gdy chcemy wykorzystać w kompozycji jakąś domyślna metodę, która przyjmuje więcej niż jeden parametr.
W przypadku gdy powyższa funkcja wejdzie w skład kompozycji to następna dostanie na wejściu kolejną funkcje lub zwróci R jeżeli podamy jeden argument i możemy sobie pisać takie łańcuszki, czyli spinać funkcje, które odpowiadają za jakąś funkcjonalność.
Tworząc nowe funkcje możemy korzystać z istniejących już funkcji i tutaj również wykorzystujemy curring i domknięcia ułatwiając tworzenie kompozycji.

 Func<string, decimal> getAfterTaxCost = Compose(
                normalizeInput,
                parseToDeciamal, 
                calcAfterTax(0.23M),
            );

#csharp #fp

Visual Code
2018-03-20 23:39

W odniesieniu do wpisu użytkownika @Aventus.
Jeśli chcemy automatycznie konwertować modele z C# do TypeScripta, pomocne może się okazać rozszerzenie Typewriter do VS.
W pliku template.tst możemy okreslić w jaki sposób ma konwertować modele. Możemy zmienić m.in. czy chcemy z domyślnym konstruktorem, które klasy będą brane po uwagę np. tylko z kończące się na Model, sposób formatowania kodu, czy konwersja identyfikatorów np. na małe litery. #angular #aspdotnetcore #csharp #dotnet

grzesiek51114

Zauważyłem, że mam jakąś awersję do programowania we wszystkim co ma script w nazwie. Może to już jakaś choroba...

AreQrm

@grzesiek51114: ja mam podobnie, ale tylko do tego co ma w nazwie "Java" ;-)

Visual Code
2018-03-14 23:01

O tym jak korzystać z HttpClient.
HttpClient implementuje IDisposable, czyli domyślnie chcielibyśmy stworzyć jego instancje z wykorzystaniem using, który zadba o to, by po opuszczeniu scope została wykonana metoda Dispose na tym obiekcie.
Problem w tym, że w ten sposób możemy bardzo szybko wyczerpać ilość dostępnych socketów, co może przyczynić się do powstania trudnych w rozpoznaniu bugów.
Samo pozbycie się obiektu httpClient nie zwalnia nam natychmiastowo socketa. Socket w implementacji TCP przejdzie w stan TIME_WAIT, trwający domyślnie 240 sekund, aby odebrać pakiety, które mogłyby jeszcze nie zdążyć dotrzeć.
Klasa HttpClient, mimo że, implementuje IDisposable jest klasą thread safe, która idealnie radzi sobie ze współbieżnymi zadaniami.
Z tego względu zaleca się wykonywanie wiele żądań na jednej instancji HttpClient.
Możesz stworzyć statyczną instancję, albo singleton z DI. #csharp #dotnet #aspdotnetcore

Aventus

Nawiazywalem do tego "Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe." Zrodlo: http://tnij.at/248639

Visual Code
2018-03-12 23:36

CodeRush to narzędzie, które nie tylko pomaga debugować kod, ale posiada dużo przydatnych funkcji przyspieszające pisanie kodu. Więcej Cena 50$ #csharp #visualstudio

tamtamtu

Nie przyspiesza (prace przyspiesza mi odciecie neta :)) - informacje ze szybciej sie programuje bo zna sie jakis skrot czy cos takiego traktuje jak wymyslanie hasel reklamowych na sile. Z obsluga vim'a w VS mi sie po prostu znacznie przyjemniej pracuje. Myszki praktycznie nie ruszam. Nawigacja bajka. Macra sa swietne (choc tu juz sama . mi wystarczyla). Tabulacja tez dziala. No i wiele innych rzeczy z czego pewnie wiekszosci nie znam :)

Afish

O, wreszcie pokazywanie wartości jak w IntelliJ.