marzo 2014 Blog Posts
Finalmente :-) class Sample<T>
{
public Sample( T data )
{
}
}
var instance = new Sample( "this type is infered" );
Non saremo più obbligati a dichiarare i tipi generici sui costruttori, rendendo di fatto utili le Tuple :-P
.m
Non tutte le feature che vediamo saranno sicuramente implementate, questi post sono basati sui draft pubblicamente disponibili al momento della scrittura
Questa invece mi piace un sacco, nonostante purtroppo non sia un’implementazione delle Monad in C#: public class Foo
{
public void Evaluate( Person person )
{
var number = person?.Addresses?.FirstOrDefault()?.StreetNumber;
}
}
Se diciamo che, dato che StreetNumber è Int32, il tipo di “number” è Nullable<Int32> il resto direi che è abbastanza ovvio. Ci evita una valanga di noiose e rumorose “if”.
.m
Non tutte le feature che vediamo saranno sicuramente implementate, questi post sono basati sui draft pubblicamente disponibili al momento della...
Questa non mi piace, nel senso che non mi piace la keyword params in generale, sono più le volte che alla lunga mi ha dato problemi piuttosto che vantaggi, comunque: public ckass Foo
{
public void Evaluate( params IEnumerable<Whatever> data )
{
}
}
.m
Non tutte le feature che vediamo saranno sicuramente implementate, questi post sono basati sui draft pubblicamente disponibili al momento della scrittura
Questa è una figata: public class Foo
{
public Int32 Evaluate( SomeInput data ) => …;
}
Lasciamo perdere la non-implementazione , ma notiamo piuttosto che Evaluate è un metodo a tutti gli effetti, il cui body invece di essere inutilmente verboso si limita ad una lambda, in realtà è una espressione, non viene generato un expression tree, usa solo una sintassi simile a quella delle lambda.
.m
Non tutte le feature che vediamo saranno sicuramente implementate, questi post sono basati sui draft pubblicamente disponibili al momento della scrittura
Accorrete gente, accorrete! “29 marzo 2014, Pordenone. 1nn0va e il Consorzio Universitario di Pordenone organizzano per il prossimo 29 marzo 2014 il Global Windows Azure Bootcamp 2014, evento che si terrà al Consorzio Universitario, in via Prasecco, 3/a, Pordenone. Si tratta di una sessione sulla piattaforma di cloud computing di Microsoft, che segue il format creato dagli MVP mondiali su Windows Azure. Particolarità è che l'evento sarà in contemporanea in oltre 100 location nel mondo, e quella di Pordenone del Consorzio Universitario è al momento l'unica location italiana. Le sessioni quindi si caratterizzeranno come un...
Ultimamente mi sto dedicando molto allo sviluppo client con JavaScript e HTML, mi diverto, odio JavaScript, amo JavaScript e comunque mi diverto :-) Una delle cose interessanti dello stack client side è che è totalmente indipendente da Windows come sistema operativo, quindi perché non sfruttare il dettaglio che il mio Mac, quando non uso la macchina virtuale, sta acceso almeno 12 ore a batteria, come ambiente di sviluppo per la parte client? Un web server… …purtroppo vi serve perché se da una pagina caricata dal browser con lo schema “file://” fate una richiesta http con lo stesso...
Sulla falsariga della inizializzazione delle proprietà automatica sarà possibile inizializzare le proprietà automatiche in solo “get”: public class Foo
{
public String Bar { get; } = "hi, there!";
}
.m
Non tutte le feature che vediamo saranno sicuramente implementate, questi post sono basati sui draft pubblicamente disponibili al momento della scrittura
Interessante poter scrivere: public class Person( string firstName, string lastName )
{
public String FirstName{ get; set; } = firstName;
public String LastName{ get; set; } = lastName;
}
Lo scopo è aumentare drasticamente la compattezza del codice in quei casi in cui praticamente scriveremmo solo plumbing, come nell’esempio di cui sopra. Possiamo quindi:
dichiarare 1 costruttore in-line con la dichiarazione della classe stessa;
assegnare dei valori di default alle proprietà auto-generate, in questo caso utilizzando i parametri del costruttore di cui sopra, che sono in scope;
Ovviamente...
…non sopporto di dover sprecare la mia, ripeto mia, banda, che pago cara e salata, soprattutto quando sono in mobilità per non-guardare delle cagate pazzesche che sono pure invasive. Non sono contro la pubblicità, ma non condivido assolutamente che io debba pagare per vederla, già spreco banda per scaricare i banner statici, che poi sa obbligato a sorbirmi i video e le musichette…no grazie, no. .m
Anche quest’anno i Community Days sono finiti, è stata per l’ennesima volta l’esperienza community migliore che si possa avere, il che non è ne scontato ne facile. Andare in crescendo, ogni singolo anno di più, garantendo un evento di qualità, di elevatissima qualità diciamocela tutta, con: 75 speaker; 89 sessioni divise su 11 track; per 3 giorni; è tutto tranne che un’operazione semplice e chiunque pensi il contrario è caldamente invitato a farsi avanti a dare una mano. Quindi complimenti ad Andrea e Daniele per la fatica...
Partendo con la nostra carrellata sulle funzionalità che verranno aggiunte al linguaggio la prima interessante (che sinceramente a me fa un po’ storcere il naso) è la possibilità di usare la keyword “using” negli statement per l’aggiunta dei namespace anche per aggiungere interi riferimenti a classi: using System;
using System.Math;
namespace UsingSample
{
public class Sample
{
static void Calculate()
{
var result = Sqrt( /* ...