Tech Conference

Tech Conference
Visual Studio 2015, C#6, .NET4.6
Heikki Raatikainen
#TechConfFI
28.-29.5.2015
# TechConfFI
Yleistä
• Avoimuus  Open Source ja tuki yleisesti käytetyille ei-ms
työkaluille
• Kaikki alustat tuettuna: .NET 5 Core, Universal Apps, Xamarin
• Kieli kehittyy ja Roslyn mahdollistaa paremmat työkalut ja
kirjastojen tuen
• Visual Studio 2015, paljon käyttöä helpottavia piirteitä
• .NET 4.6 ei sisällä mitään maailmaa mullistavia uudistuksia
2
28.-29.5.2015
Tech Conference 2015
# TechConfFI
.NET 2015
3
28.-29.5.2015
Tech Conference 2015
# TechConfFI
.NET Framework 4.6
.NET Framework 4.6
.NET
Framework
4
.NET
Framework
4.5
.NET
Framework
4.5.1
.NET
Framework
4.5.2
# TechConfFI
. NET Compiler Platform (“Roslyn”)
Universal Windows Platform
Universal Windows Platform
.NET Native highlights
# TechConfFI
# TechConfFI
.NET and Xamarin
Share app logic across platforms
100% APIs exposed
Native UI
Native UI
Native UI
C# + XIB
C# + AXML
C# + XAML
Xamarin
.NET Core
# TechConfFI
UI: Visual Studio/Xamarin
iOS app designer in Visual Studio
Android app designer in Visual Studio
# TechConfFI
Visual Studio 2015
Uusia ominaisuuksia
Kevyt versio Code
Tech Conference 2015
# TechConfFI
Uusia/muuttuneita ominaisuuksia
• Kosketusnäyttötuki
•
•
•
•
skrollaus
zoomaus
valinta, rivi vasemmasta marginaalista ja sana tuplanapautuksella
context-valikko pitkällä painalluksella
• Tärkein näppäinyhdistelmä edelleen Ctrl+.
• toki lisää toimintoja verrattuna edelliseen versioon
10
28.-29.5.2015
Tech Conference 2015
# TechConfFI
Editorista
• automaattinen sulkujen lopetus
• rivien siirto Alt+nuolinäppäimet
• Useimmat Productivity PowerToolsin toiminnoista vakiona
mukana
11
28.-29.5.2015
Tech Conference 2015
# TechConfFI
Light Bulbs yms
• Rename muutettu visuaalisemmaksi ja kätevämmäksi
• Editori näyttää harmaalla ’turhia’ osia, esimerkiksi
käyttämättömät using-lauseet tai turhat this-tarkenteet
• koodimuutokset voidaan tehdä tiedostoon, projektiin tai
solutioniin, demo vaikka using-määreillä
• korjaustoimintojen herätys Ctrl+. tai koodin maalaus ja sitten
Ctrl+.
12
28.-29.5.2015
Tech Conference 2015
# TechConfFI
Ikkunointi
• Ikkunoiden toiminnallisuus ei juurikaan ole muuttunut
• Uutta Window-valikossa Layout –toiminnot joilla saa helposti
erikokoisille näytöille tehtyä asetukset
•
•
•
•
13
Save Layout
Apply Layout
Manage Layout
Reset Window Layout // tämä on siis se vanha toiminto
28.-29.5.2015
Tech Conference 2015
# TechConfFI
Nuget
• Nuget Package Manager on kokonaan uusi
• selvempi
• helpompi
• voi valita listalta asennettavan paketin version joka aikaisemmin oli
olemassa vain Package Manager Console:n kautta
14
28.-29.5.2015
Tech Conference 2015
# TechConfFI
WPF ja XAML
Tech Conference 2015
# TechConfFI
WPF ja XAML
• integraatiota Blendin kanssa parannettu
• suorituskykyä ja High DPI-tukea parannettu
• XAML:
• Peek Definition koodille
• Region-määrittely
• WPF:
• Live Visual Tree
• Live Property Editor
16
28.-29.5.2015
Tech Conference 2015
# TechConfFI
Debuggaus
Tech Conference 2015
# TechConfFI
Uusia ominaisuuksia
• BreakPointin lisäasetukset helpompi käyttää, sama
toiminnallisuus kuin aikaisemmin mutta UI on uusittu
• Askellettaessa näyttää kuinka kauan edellisen toiminnon
suoritus kesti
• Json Visualizer
• Immediate-ikkunassa voi käyttää lambda-lausekkeita
18
28.-29.5.2015
Tech Conference 2015
# TechConfFI
C# 6
Tech Conference 2015
# TechConfFI
C#
•
•
•
•
•
•
•
•
20
Auto-property, alustus ja readonly
Static-luokan using
Luokan metodit Lambda-lausekkeina
Nameof, refaktorointiturvallinen nimenselvitys
Elvis-operaattori (null-conditional operator)
String interpolaatio, helppo String.Format
Poikkeusfiltterit ja await catch- ja finally –lohkoissa
Kokoelmaluokkien alustus
28.-29.5.2015
Tech Conference 2015
# TechConfFI
Automaattipropertyt
public string Nimi { get; }
// read-only property
// saa käyttää konstruktorissa
// myös alkuarvon asettaminen mahdollista
public int Indeksi { get; } = -1; // alustus kuten kentillä
// konstruktorissa tehty asetus ajaa alkuarvon yli
public string Nimi { get; set; } = ”oletusarvo”;
21
28.-29.5.2015
Tech Conference 2015
# TechConfFI
static –luokkien using
using static System.Diagnostics.Trace; // luokka, ei nimiavaruus
// koodissa:
WriteLine(”tulostus OK”); // ei tarvitse Trace-luokkaa alkuun
22
28.-29.5.2015
Tech Conference 2015
# TechConfFI
Metodit ja lambda
public decimal LaskeHinta() {
return Hinta * ALVProsentti;
}
// nyt kirjoitetaan:
public decimal LaskeHinta() => Hinta * ALVProsentti;
// ei voi olla lohkosulkuja  vain lyhyet metodit!
23
28.-29.5.2015
Tech Conference 2015
# TechConfFI
NameOf
Tilaus tilaus = new Tilaus();
string nimi = nameof(tilaus);
// nimi == tilaus
nimi = nameof(Tuote);
// nimi == Tuote
nimi = nameof(tilaus.ToimitusOsoite); // nimi == ToimitusOsoite
24
28.-29.5.2015
Tech Conference 2015
# TechConfFI
Elvis-operaattori (null-conditional operator)
//lyhentää koodia missä on null-tarkistuksia
string osoite = ””;
if (tilaus != null && tilaus.ToimitusOsoite != null
&& tilaus.ToimitusOsoite.Postitoimipaikka != null) {
osoite = tilaus.ToimitusOsoite.Postitoimipaikka.ToUpper();
}
// ja sama lyhyemmin:
osoite = tilaus?.ToimitusOsoite?.Postitoimipaikka?.ToUpper();
// myös taulukot ja delegaatit
Tuote t1 = tuotteet?[0];
25
28.-29.5.2015
Tech Conference 2015
# TechConfFI
string-interpolatio
string s = Nimi + ”, Hinta: ” + Hinta.ToString();
s = string.Format(”{0}, Hinta: {1}”, Nimi, Hinta);
s = $”{Nimi}, Hinta: {Hinta}”; // tämä lienee näistä helpoin
26
28.-29.5.2015
Tech Conference 2015
# TechConfFI
Poikkeuksista
try {
// koodia…
}
catch (ArgumentException ex) when (ex.Message.Contains(”demo”)) {
//…
}
finally {
await SuljeYhteydetAsync();
}
27
28.-29.5.2015
Tech Conference 2015
# TechConfFI
Kokoelmien alustus
Dictionary<string, Tuote> tuotteet = new Dictionary<string, Tuote>()
{
[”eka”] = new Tuote(1),
[”toka”] = new Tuote(2),
[”viimeinen”] = new Tuote(33)
};
28
28.-29.5.2015
Tech Conference 2015
# TechConfFI
.NET 4.6
Tech Conference 2015
# TechConfFI
Uusia piirteitä
• Universal Apps
• Cross-platform Apps
• ASP.NET 5, modulaarinen versio jossa sovellukseen otetaan vain
tarvittavat ominaisuudet mukaan
• MVC 6 == VS2015 + MVC + Web API + Web Pages
30
28.-29.5.2015
Tech Conference 2015
# TechConfFI
Muutoksia
• ASP.NET, HTTP2-tuki
• Windows Forms-kontroleille High DPI –tuki, renderöityvät
paremmin tarkoilla näytöillä
• Compatibility Switches
• Suorituskyky parempi, esim 64-bit JIT kääntäjä ja
muistinhallinnan toiminnot
31
28.-29.5.2015
Tech Conference 2015
# TechConfFI
Compatibility Switches
// käyttävä sovellus:
AppContext.SetSwitch("Switch.Apu.UusiOminaisuusPäällä", true);
// kirjasto:
public string Testi1() {
bool uusiToiminto;
AppContext.TryGetSwitch(”Switch.Apu.UusiOminaisuusPäällä", out uusiToiminto));
if (uusiToiminto){
return "uusi";
}
else {
return "vanha";
}
}
32
28.-29.5.2015
Tech Conference 2015
Tech Conference
Kiitos osallistujille!
Heikki Raatikainen
heikki.raatikainen@sovelto.fi
# TechConfFI
28.-29.5.2015