Gli object initializers permettono di impostare le proprietà pubbliche di una classe con una sintassi molto semplice e veloce.
Supponiamo di avere una classa Cliente con queste proprietà pubbliche(ho utilizzato le automatic properties):

public string Nome  { get; set; }
public string Cognome{ get; set;}
public string CodiceFiscale{ get; set;}

Read more

Questo è il primo di una serie di articoli dedicati al nuovo C# 3.0.

Iniziamo da un argomento leggero e facile, ma utile in certi contesti.
Il nuovo compilatore di C#, presente in Visual Studio 2008, introduce le Automatic Properties, ovvero una forma abbreviata delle proprietà.
Read more

Gli operatori implicit ed explicit sono stati introdotti con .NET 2.0.
Questi operatori servono per dichiarare un operatore di conversione di tipi.
Ecco subito un semplice esempio.
Abbiamo una struttura (di nome Struttura) che contiene un campo di tipo intero:

struct Struttura
{ public int Value; } 

Struttura stru; 

Se si volesse inizializzare la struttura (e quindi il suo unico campo Value) si deve scrivere così

stru.Value = 100; 

Read more

I tipi nullable sono stati introdotti nella versione 2.0 di .Net.
Questi tipi valori sono istanze della struttura Syste.Nullable<>, e rappresentano un tipo con tutti i valori di quello base, più un valore aggiuntivo null. Mi spiego meglio: prendiamo in considerazione, come esempio, il tipo bool:

System.Nullable<bool> var;

La variabile var, al contrario di una normale variabile bool che può assumere due valori (true o false), può assumere tre valori: true, false o null.

Read more

In alcuni casi potrebbe essere utile ottenere informazioni generiche, ma anche dettagliate, riguardo i vari stati di tutte le connessioni presenti sul nostro sistema in riferimento a più protocolli di rete.

Esistono diversi modi per raggiungere questo scopo ed uno dei più rapidi ci viene offerto dalla versione 2.0 del .NET Framework con la classe IPGlobalProperties (namespace System.Net.NetworkInformation), in particolare sfruttando il metodo statico GetIPGlobalProperties().

Read more

Nei progetti VC# il thread principale del programma è legato alla Form principale per questo quando si chiude, la MainForm termina anche l’esecuzione del programma.

Questo comportamento è dovuto da questa riga di codice contenuta nel metodo Main:

Application.Run(new Form1());

Read more

Anche se in rete è possibile trovare diverse definizioni di oggetti che incapsulano il tipo nativo Thread di .NET, queste risultano spesso incomplete. Ecco perché ho deciso di svilupparne una custom per soddisfare le mie esigenze applicative.

Read more

Spesso può essere utile sviluppare applicazioni funzionanti su singola istanza. Questa è una funzionalità richiesta soprattutto dai programmatori VB che per ragioni di lavoro sono passati a C#. Infatti in VB.NET basta spuntare l’opzione “Make single istance application” nelle opzioni del progetto. Nei progetti in C# questa opzione non esiste, ma ciò non vuol dire che non si possa implementare via codice.In prima analisi si potrebbe pensare di eseguire, all’interno del Main, un controllo sui processi in esecuzione. La cosa sarebbe fattibilissima, basta utilizzare il metodo GetProcessByName della classe Process per ottenere i processi che portano il nome della nostra applicazione. I metodi GetProcess (GetProcessByName, GetProcessById) però, usano i performance counters. Pertanto non sono da usare così alla leggera perché possono avere un paio di problemi:

  • I Performance Counter possono essere disabilitati e la classe Process, senza di questi, non funziona;
  • I Performance Counter sono disponibili solo agli utenti admin della macchina.

Un’alternativa è quella di usare i Mutex. I Mutex sono una primitiva di sincronizzazione e sono molto facili da usare. Ecco quindi come diventa la classe program:

Read more

← Previous Page