Recently at work I’ve been looking into migrating our projects from VS2013 to VS2017. As part of the process we decided to move from C# 5.0 to C# 7.0. It turned out that after the switch some of our projects won’t build anymore. I spent some time investigating the issue and found the outcome interesting so let me share my story with you.
Sztuka programowania 2837 dni, 15 godzin, 41 minut temu 65 źrodło rozwiń
Tak, tak, tak. C# 6 jest już z nami od jakiegoś już czasu, ale w życiu nie jest tak kolorowo i nie wszyscy mogli przejść na nowego Visual Studio 2015 tuż po tym jak się ukazał. Dodatkowo nawet jeśli ktoś już przesiadł się na najświeższe IDE od MS, to i tak nie zawsze mógł używać nowości, które wpadły wraz z C# 6. Zatem dla niektórych będzie to przypomnienie, dla innych zapoznanie się z nowościami. Co więcej, w sieci jest wiele stron opisujących nowe elementy w C#, które... nie znalazły się w finalnym wy...
Sztuka programowania 3095 dni, 7 godzin, 21 minut temu 389 źrodło rozwiń
C# jest językiem, który był zaprojektowany z nastawieniem na programowanie obiektowe. Ewoluując, z każdą wersją zawiera co raz więcej elementów, które pozwalają na skorzystanie z paradygmatu języków funkcyjnych. Na przykładzie metody budującej listę html’ową pokażę kilka technik, dzięki którym zamienimy typowy kod C# w kod bardziej przypominający kod języka funkcyjnego.
Sztuka programowania 3314 dni, 14 godzin, 5 minut temu 552 źrodło rozwiń
Przemysław Walkowski. Kolejna książka z mojej biblioteki to C# 6 i MVC 5 napisana przez polskich autorów Krzysztofa Żydzika i Tomasza Raka. Tworzenie nowoczesnych portali internetowych. Jest to na pewno pierwsza i chyba jedyna książka o nowościach w C# 6.0 po polsku. Wydana bardzo na czasie (jeszcze przed oficjalnym wydaniem C# 6.0) opisuje MVC 5 i Entity Framework 6 oraz wiele innych internetowych technologi. Zapraszam do recenzji Budowa Książka ma 500 stron...
Dołączę do grona piszących o nowościach w C# 6. Jedną z nich jest słowo kluczowe „nameof”. Po zainstalowania Visual Studio 2015 (do czego gorąco zachęcam) będzie można je sprawdzić w praktyce. Nameof zwraca w postaci stringa nazwę argumentu, który przekazujemy do metody nameof. Na początek praktyczny przykład zastosowania tego słówka kluczowego w WPF-ie. Podczas bindowania właściwości z zastosowaniem interfejsu INotifyPropertyChanged musimy...
Sztuka programowania 3681 dni, 15 godzin, 58 minut temu 592 źrodło rozwiń
Dzisiaj znów kilka drobnych nowości z C# 6.0 Pierwsza z nich to możliwość połączenia using z klasami statycznymi, których sposób użycia przypomina trochę przestrzenie nazw. Zaprezentuję to na przykładzie klasy Console. Posiada ona kilka statycznych metod m.in. WriteLine:Console.WriteLine("Hello World!"); W nowej wersji, będziemy mogli dołączyć każdą klasę statyczną, tak jak zwykłą przestrzeń nazw:using System.Console; namespace ConsoleApplication2 { class Program { staticvoid Main(s...
Dzisiaj kolejna nowa funkcjonalność w c#. Zacznijmy od przykładu:publicclass Point { publicdouble Dist => Math.Sqrt(X * X + Y * Y); publicdouble X; publicdouble Y; } X oraz Y to zwykłe pola (tak nie powinno się ich definiować jako publiczne ale to tylko przykład). Następnie Dist to dziwny twór… Wiemy, że mamy tam wyrażenie lambda, które wywołuje Math.Sqrt i robi obliczenia. Zobaczymy jak możemy z tego skorzystać w kodzie:Point point =new Point(); point.X =5; point.Y =6; double dist = point...
W nowej wersji c# zdecydowano się zezwolić na konstruktory bezparametrowe w strukturach danych. Kiedyś pisałem dlaczego, nie można było ich definiować w poprzednich wersjach języka. Chodziło po prostu o wydajność, szczególnie podczas alokacji tablic danych. Dodam, że w CLR zawsze było dozwolone posiadanie konstruktorów bezparametrowych i wyłącznie c# na to nie zezwalał. W C# 6.0 możliwe już jest napisanie własnego konstruktora bez parametrów, ale wciąż należy pamiętać o możliwych problemach wydajnościow...
Zacznijmy dziś od operatora nameof. Zwraca on po prostu nazwę przekazanej metody:staticvoid Main(string[] args) { string writeLine= nameof(Console.WriteLine); string testFunction = nameof(TestFunction); Console.WriteLine(writeLine); Console.WriteLine(testFunction); } privatestaticstring TestFunction(int a,double b) { returnnull; } Chyba nie ma tutaj nic nadzwyczajnego. Po prostu zwracana jest nazwa w formie string: Po co nam to? Na przykład, aby zaimplementować OnPropertyChanged:publicc...
Nowa wersja języka wprowadzi również ulepszenia w obsłudze wyjątków. Często tworzymy jeden wyjątek typu OperationFailedException, a w nim enum, który określa dlaczego operacja nie powiodła się tzn.: publicclass OperationFailedException : Exception { public OperationFailedException(int statusCode) { StatusCode = statusCode; } publicint StatusCode { get; set; } } Co jeśli chcemy napisać obsługę wyjątków, ale wyłącznie tych ze statusem 5? Dzisiaj możemy łapać wszystkie wyjątki i sprawdzać ...
Dziś wpadł mi link http://damieng.com/blog/2013/12/09/probable-c-6-0-features-illustrated przekazany przez kolegę. Mimo, że na oficjalnych blogach nic nie znalazłem, o tyle natrafiłem na streszczenie jednej z rozmów z BUILD 2013: http://wesnerm.blogs.com/net_undocumented/2013/07/anders-on-c-60-at-build-2013.html. Jest to odpowiedź na wątpliwości na temat przyszłości C#, .NET i “Roslyn”. Jak wszystko dobrze pójdzie to .NET 5 będzie hulać na “Roslyn”, a C# nabierze nowych właści...