AntonioPelleriti.it [aka z9]

I code, therefore I am

NAVIGATION - SEARCH

#4 - ITA | Identificatori verbatim C#

In alcuni casi può rendersi necessario l’utilizzo di una delle parole chiave di C# come identificatore.

Ciò in particolare può tornare utile quando si interagisce con altri linguaggi .NET, in cui ad esempio una data parola non è una parola chiave.

Per evitare il conflitto basta far precedere l’identificatore dal carattere @. Il carattere @ non fa parte dell'identificatore, quindi quest'ultimo può essere usato in altri linguaggi senza il carattere @. Un identificatore con il prefisso @ è detto identificatore verbatim.

L'uso del carattere verbatim è consentito anche con identificatori che non sono parole chiave, ma naturalmente è meglio evitarlo per questioni di stile e per evitare confusione.

Per esempio, è possibile dichiarare una variabile così:

int @class;

#3 - ITA | Quante e quali sono le parole chiave di C#?

Quante e quali sono le keyword (o parole chiave) che costituiscono il vocabolario del linguaggio C#, secondo le specifiche 5.0?
Esattamente 77, riportate qui di seguito.

abstract
as
base
bool
break
byte
case
catch
char
checked
class
const
continue
decimal
default
delegate
do
double
else
enum
event
explicit
extern
false
finally
fixed
float
for
foreach
goto
if
implicit
in
int
interface
internal
is
lock
long
namespace
new
null
object
operator
out
override
params
private
protected
public
readonly
ref
return
sbyte
sealed
short
sizeof
stackalloc
static
string
struct
switch
this
throw
true
try
typeof
uint
ulong
unchecked
unsafe
ushort
using
virtual
void
volatile
while

 

questo e altro all'interno di Programmare con C# 5, guida completa


Enum.GetValues in Windows Phone 7.x

 

Per ottenere l'elenco dei valori di un'enumerazione, ove non è disponibile l'apposito metodo GetValues (o GetNames) di Enum, per esempio in Windows Phone 7, possiamo implementare un metodo che sfrutta la Reflection ed ottiene lo stesso risultato:

public static List<T> GetEnumValues<T>()
        {
            List<T> values = new List<T>();
            foreach (var x in typeof(T).GetFields())
            {
                if (x.IsLiteral)
                {
                    values.Add((T)Enum.Parse(typeof(T), x.Name, false));
                }
            }
            return values;
        }

a questo punto possiamo invocarlo come segue:

var values=GetEnumValues<MyEnum>();


#2 - ITA | Chi è il creatore di C#?

Il creatore del linguaggio C# è Anders Hejlsberg, ingegnere software danese, leggenda vivente del mondo della programmazione. 

Hejlsberg vanta un’esperienza trentennale in Borland dove ha creato il compilatore turbo Pascal e il suo successore, Borland Delphi. 

Nel 1996 approda in Microsoft, dove inizialmente si occupa del J++ (versione Microsoft del linguaggio Java) e delle Windows Foundation Classes, prima di divenire l’architetto capo di C#.

Potete seguirlo su twitter: @ahejlsberg

 

questo e altro all'interno di Programmare con C# 5, guida completa

#1 - ITA | Da dove deriva il nome C#

Perchè si chiama C
Vi sono varie interpretazioni, ma in quanto linguaggio derivato dal C, il nome C# deriva dalla combinazione di C con il simbolo di diesis preso dalla notazione musicale, che indica che la nota a cui si riferisce va alzata di un semitono.

Quindi un linguaggio che è un passo superiore a C.

Secondo altre interpretazioni il simbolo # è invece la combinazione di quattro +, quindi un modo di scrivere C++++.

Il simbolo nel nome di C♯ è il diesis, che in inglese si legge sharp ed è diverso dal simbolo del cancelletto #. Ma con una tastiera è più semplice utilizzare quest'ultimo, In ogni caso si pronuncia "C sharp" e non “C cancelletto” o “C diesis”.

 

questo e altro all'interno di Programmare con C# 5, guida completa

 

Windows Phone 8.1 e la simulazione di push notification

Il nuovo emulatore di Windows Phone messo a disposizione dal Windows Phone SDK 8.1, permette di testare in maniera molto semplice e produttiva applicazioni che debbano fare uso di push notification, senza dover implementare la parte server di invio di queste ultime.

Il nuovo emulatore mette a disposizione nuovi strumenti, che appariranno come tab nella finestra Additional Tools, attivabile cliccando sulle freccette dell'emulatore stesso. Fra le novità vi è appunto la tab Notifications, come potete notare dall'immagine seguente:

 

Appena mi sono accorto di questa nuova funzione, ho provato subito ad utilizzarla, e devo dire che l'utilizzo stesso non è stato immediato (probabilmente la tarda ora aveva fatto brutti scherzi)! Quindi ho deciso di scrivere questo post, per aiutare chi dovesse incontrare le stesse difficoltà.

Innanzitutto c'è da dire che per testare tale funzionalità, l'app dovrà prevedere la gestione delle push notification, visualizzando magari delle notifiche Toast, aggiornando le tile con testi, immagini, badge, e così via.

Proviamo quindi a fare subito un semplice esempio pratico. Avviate Visual Studio 2013 (con Update 2 RC installato), e create un nuovo progetto Windows Phone (va bene sia un progetto Windows Phone Store App, quindi basato sulla nuova architettura Windows Runtime, che un progetto Windows Phone Silverlight 8.1, tanto l'importante è poter utilizzare il nuovo emulatore).

Dopo aver creato il progetto, dobbiamo innanzitutto impostare l'app in maniera che essa possa visualizzare delle Toast Notifications. Quindi basta fare doppio click sul file Package.appxmanifest, e nella sezione Notifications, impostare il valore Yes in corrispondenza della voce Toast Capable.

 

A questo punto, è necessario ottenere un canale sul quale viaggeranno le push notification dal Windows Push Notification Service verso l'app, e quindi al caricamento della pagina principale, all'interno del gestore delll'evento Loaded, ho inserito il seguente codice:

private async void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
        {
            var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();

            channel.PushNotificationReceived += (s, args) => { Debug.WriteLine(args.NotificationType); };
            Debug.WriteLine(channel.Uri.ToString());
        }

Esso crea un oggetto channel, e vi associa un gestore per l'evento PushNotificationReceived (in questo caso gestito inline con una espressione lambda, ma tanto lo utilizzeremo solo per stampare una stringa di debug) e stampa nella finestra di debug l'Uri del canale appena creato.

Il progetto, per lo scopo che ci siamo prefissi, cioè quello di testare il nuovo tool per le notifications, è finito.

Quindi ho avviato il debug, ho aperto gli additional tools, ho abilitato la checkbox Simulation, ed ho cercato di inviare una notifica push simulata. Semplice, ma troppo bello per essere vero: non funzionava!

In realtà, il tool stesso indica la strada corretta da seguire: Enable Simulation, then redeploy and launch the push app to get the channel URI.

In parole povere, basta seguire la seguente procedura:

  1. avviare la prima volta l'app e quindi l'emulatore
  2. aprire i tools e abilitare la checkbox Simulation
  3. interrompere il debug
  4. lanciare nuovamente l'app
  5. cliccare il pulsante refresh per ottenere il channel URI

Ora è possibile scegliere una tipologia di notifica, modificare eventualmente il template, e inviarle all'app cliccando il pulsante Send.

La seguente immagine mostra una Toast Notification appena ricevuta dall'app sull'emulatore, le stesse notifiche sono mostrate naturalmente anche all'interno del nuovo Action Center introdotto da Windows Phone 8.1.

 

 

Storia delle versioni di .NET, C# e Visual Studio.

Microsoft ha parlato per la prima volta della nuova piattaforma .NET, originariamente conosciuta come NGWS (Next Generation Web Services) alla conferenza PDC dell'11 luglio 2000. rilasciando una agli sviluppatori una Tech Preview.

La prima Beta 1 di .NET 1.0, vede invece la luce l'1 novembre 2000, seguita da una Beta 2 il 20/06/2001. 

Nella seguente tabelle sono riassunte le successive release della piattaforma .NET, delle specifiche di C# e dell'IDE Visual Studio.

Anno  .NET Framework C# Visual Studio
2002 1.0 1.0 Visual Studio .NET 2002
2003 1.1 1.2 Visual Studio .NET 2003
2005 2.0 2.0 Visual Studio 2005
2006 3.0 2.0
2007 3.5 3.0 Visual Studio 2008
2010 4.0 4.0 Visual Studio 2010
2012 4.5 5.0 Visual Studio 2012
2013 4.5.1 5.0 Visual Studio 2013

Storia delle versioni di .NET, C# e Visual Studio.

.NET Framework Versions, C# Releases, Visual Studio Editions history

 

L'operatore di Null Coalescing in C#

L'operatore ?? è detto operatore di null coalescing, ed è molto utile in una serie di situazioni permettendo di scrivere codice più elegante e ristretto in C#.

Quante volte vi è capitato di dover scrivere un blocco if per controllare se una variabile è null, ed agire di conseguenza scegliendo un valore di default da assegnare alla stessa variabile? Ecco un esempio:

string name;
if(str!=null)
{
 name=str;
}
else name="senza nome";

 

Probabilmente starete pensando: "beh c'è sempre l'operatore ternario!", ed in effetti un altro modo di scrivere lo stesso blocco di codice può essere il seguente:

string name= (str!=null) ? str: "senza titolo";

Ma l'operatore di null coalescing, introdotto già con le specifiche 2.0 ma spesso ignorato da chi si avvicina al mondo della programmazione in C#, consente di essere ancora più concisi.

Esso verifica se l'operando a sinistra è diverso da null, ed in tal caso restituisce il valore dell'operando sinistro stesso. In caso contrario invece restituisce l'operando destro:

string name= str ?? "senza titolo";

L'operatore funziona anche con tipi valore, per esempio nel caso seguente, se il valore della variabile nullableInt è null, viene assegnato alla variabile i il valore 1:

int? nullableInt=null;
int i= nullableInt ?? 1; // i vale 1

 

Se invece nullableInt possiede un valore, esso viene assegnato alla variabile:

int? nullableInt=123;
int i= nullableInt ?? 1;  // i vale ora 123

ABC# - Guida alla programmazione in C#

Sono passati tantissimi anni dalla prima stesura di questo libro, se non erro era il 2005, eppure ancora in tanti mi scrivono per chiedermi una copia del pdf, che fra l'altro ormai si trova facilmente digitando su qualsiasi motore di ricerca il titolo oppure semplicemente ricercando Guida di programmazione in C#.

Per quelli che comunque non fossero riusciti a reperirlo ecco qui il link 

ABC# guida alla programmazione in csharp.pdf (1,48 mb)

 

Se vuoi offrirmi un caffè o una birra... grazie!

 

 

La versione del libro aggiornata alle specifiche di C# 5.0 C#  6.0 è diventata un libro vero e proprio!

Programmare con C# - Guida alla completa, edito nel 2014 da LSWR

Programmare con C# 6 - Guida alla completa, edito nel 2016 da LSWR

http://www.antoniopelleriti.it/page/libro-csharp