Boxing e Unboxing

di: Giorgio Borelli - del: 15 April 2010
Filed Under: .NET framework, C#

Cos'è il boxing e unboxing del .NET frameworkIl Common Language Runtime (CLR) del .NET framework è in grado di eseguire applicazioni scritte in uno qualsiasi dei linguaggi supportati dalla piattaforma, quali C# o VB.NET, anche misti fra loro, questo è possibile grazie al Common Type System (CTS), ovvero l'insieme comune e condiviso dei tipi all'interno del framework.

 

In altre parole, ad esempio, il tipo int di C# ed integer di VB, durante l'esecuzione non sono altro che il tipo comune System.Int32 del framework.NET, tutto questo sempre ammesso che i linguaggi utilizzati soddisfino determinate specifiche (CLS - Common Language Specification) che li rendano compatibili con quelli comuni del framework.

 

Fatta questa premessa dovuta per avere un quadro più completo dell'argomento, diciamo che tra i tipi comuni del CLR, vi è un tipo generico da cui derivano tutti gli altri, il tipo System.Object, infatti si suole dire che nel .NET framework qualsiasi cosa è un'oggetto, sia questo un tipo intero, booleano o una classe stessa. La possibilità di avere un tipo generico che rappresenti qualsiasi dato all'interno del nostro programma ci consente di usarlo per potergli associare un qualsivoglia oggetto, sia esso un Tipo Valore o Tipo di Riferimento. Ad un primo impatto questo approccio potrebbe risultare molto comodo, uso solo tipi Object, e l'applicazione gira ugualmente, fregandomene della definizione dei tipi e della loro opportuna gestione.

 

Ma siamo certi che questo approccio sia corretto, purtroppo no, usare un tipo Object generico porta ad un decadimento delle prestazioni dell'applicazione, poichè avvengono le operazioni di Boxing e Unboxing per la conversione dà Tipi Valore a Tipi di Riferimento e viceversa, andiamo quindi a scoprirne di più su cosa avviene nelle operazioni di Boxing e Unboxing.

 

More...

Comments (1) E-mail del.icio.us share su Facebookfacebook Permalink Post RSS   Bookmark and Share

Differenze tra Tipi di Valore e Tipi di Riferimento

di: Giorgio Borelli - del: 14 April 2010
Filed Under: C#, Programmazione, .NET framework

Le principali caratteristiche e differenze tra i tipi di valore ed i tipi di riferimento del .NET frameworkI linguaggi supportati dal .NET framework quali C# e VB si dice che sono strongly-typed, ossia fortemente tipizzati, in parole povere ogni variabile od oggetto dichiarato all'interno del programma deve definire un tipo e lo deve rispettare (pena un errore di compilazione).

 

Pertanto un tipo descrive le caratteristiche dell'informazione che esso dovrà andare a rappresentare all'interno del programma a mezzo di una variabile, sia esso un numero, una sequenza di caratteri od oggetti più complessi come istanze di classi, in ogni caso ogni elemento all'interno di un programma sviluppato col .NET framework deve essere dichiarato a mezzo di un tipo e ne deve rispettare le funzionalità durante l'uso.

 

I tipi non si differenziano però solo per il dato che rappresentano, ma anche per la gestione che di questi se ne fà in memoria. All'interno del .NET framework, o meglio del CLR (Common Language Runtime) sono definite due categorie di tipi, i Tipi di Valore (Value Types) e Tipi di Riferimento (Value References), l'una e l'altra categoria presenta le proprie caratteristiche e soprattutto ha un diverso metodo di allocazione della memoria, per chi vuole iniziare a programmare in .NET non può prescindere dalla conoscenza di queste nozioni di base relative ai tipi per valore e per riferimento, andiamo a vedere pertanto le principali caratteristiche e differenze.

 

More...

Comments (2) E-mail del.icio.us share su Facebookfacebook Permalink Post RSS   Bookmark and Share

Come generare numeri casuali in C#

di: Giorgio Borelli - del: 07 March 2010
Filed Under: C#, .NET framework

Comm generare un numero casuale in C#Nel .net framework non poteva di certo mancare una classe per gestire i numeri random (casuali), questa è la classe System.Random, la quale ci permette di generare numeri casuali interi, double o riempire array di byte. Possiamo specificare anche un valore massimo, o un range di valori nel quale il nostro numero casuale deve ricadere.

 

Tramite la classe Random generare numeri casuali in C# è davvero un gioco da ragazzi, dobbiamo porre però attenzione a questo argomento, poichè nasconde un'insidia, infatti è bene sapere che la classe Random permette di generare numeri pseudo-casuali, i numeri generati non sono completamente casuali, poiché sono generati da un'algoritmo matematico (algoritmo sottrattivo) che per sua natura stessa non può essere casuale.

 

La genereazione di un numero casuale avviene partendo da un valore d'inizializzazione, detto seme, scegliendo sempre lo stesso seme si otterrà sempre la stessa sequenza di numeri pseudo-casuali, proprio perchè generati da un'algoritmo matematico. Per ottenere dei numeri veramente casuali è necessario variare il valore del seme in base ad un qualche fattore, molto utile potrebbe essere il fattore tempo, affidandoci magari al clock di sistema.

 

Andiamo a vedere come usare la classe Random per generare numeri casuali in C#, facendo bene distinzione tra quelli pseudo-casuali e quelli casuali puri.

 

More...

Comments (2) E-mail del.icio.us share su Facebookfacebook Permalink Post RSS   Bookmark and Share

Il pattern Singleton in C#

di: Giorgio Borelli - del: 25 February 2010
Filed Under: C#, Programmazione

Il design pattern Singleton in C SharpNell'ambito della programmazione OOP i design patterns non sono altro che delle soluzioni efficaci, testate e funzionanti a problemi comuni. Utilizzare un pattern al momento opportuno si rivela sicuramente una soluzione elegante ed efficace, ed evita di ri-scrivere del codice potenzialmente non ottimizzato o contentente dei bug. Tuttavia i patterns non rappresentano delle regole scritte per una buona programmazione, più che altro forniscono delle linee guida da seguire quando uno sviluppatore deve mettere appunto un determinata soluzione.

I design patterns sono diversi, ed è celebra la loro raccolta nel libro “Design Patterns: Elements of Reusable Object-Oriented Software” ad opera del Gof (Gang of four - la banda dei quattro), quattro esperti programmatori di fama, i quali hanno suddiviso i patterns in tre famiglie: strutturali, creazionali e comportamentali.

Oggi vogliamo prendere in considerazione il pattern Singleton, appartenente ai patterns creazionali, specifici per la creazione d'istanze. Lo scopo del pattern Singleton è quello di permettere per una classe la creazione di una ed una sola istanza con un'unico punto d'accesso (entry-point) all'istanza a livello globale.
Andiamo a scoprire come s'implementa un pattern Singleton in C# e quali caratteristiche e vantaggi comporta.


More...

Comments (1) E-mail del.icio.us share su Facebookfacebook Permalink Post RSS   Bookmark and Share

Gli Eventi in C Sharp

di: Giorgio Borelli - del: 24 February 2010
Filed Under: C#

Spiegazione degli eventi in C#Sia che parliamo di programmazione per Windows Form o Web Form la gestione degli eventi in C# è un'aspetto fondamentale che ogni buon programmatore deve conoscere.

 

Il meccanismo degli eventi consente di notificare dei messaggi tra gli oggetti della mia applicazione al verificarsi di determinate condizioni. Allo scatenarsi di un evento è possibile gestirlo opportunamente per effettuare operazioni ed intraprendere azioni per variare il comportamento dell'applicazione come reazione al cambiamento del suo stato.

 

Un oggetto che genera un'evento, lo notifica ad un'altro che lo prende in carico e lo gestisce (handler dell'evento), tale meccanismo viene implementato per mezzo dei delegates, gli eventi in C# non sono altro che particolari tipi di delegate multicast.

 

More...

Comments (0) E-mail del.icio.us share su Facebookfacebook Permalink Post RSS   Bookmark and Share

I Delegate in C Sharp

di: Giorgio Borelli - del: 21 February 2010
Filed Under: C#

Cosa sono e come funzionano i delegate in C#Un delegate in C# viene spesso descritto come un puntatore a funzione (in analogia con il C++), un ulteriore paragone e quello con le interfacce, un delegate (come le interfacce per le classi) specifica la signature (firma) del metodo che successivamente sarà invocato dai metodi degli oggetti che ne rispettano la firma.

 

Senza nulla togliere alle analogie che sussistono realmente tra i delegate ed i puntatori a funzioni e le interfacce, penso che per chi è alle prime, una tale definizione può generare un pò di confusione, allora come spiegare cos'è un delegate in C#?

 

More...

Comments (0) E-mail del.icio.us share su Facebookfacebook Permalink Post RSS   Bookmark and Share

La gestione delle eccezioni in C Sharp

di: Giorgio Borelli - del: 16 February 2010
Filed Under: C#

Come gestire l'eccezioni nel codice C#, con le istruzioni try, catch, finally e throwLa gestione delle eccezioni indipendentemente dal linguaggio usato è un'aspetto fondamentale di ogni buon programma, sia questo un'applicazione web che un programma stand alone.

Per quanto ben progettato, nessun programma è esente da bug, sia il contesto sia gli errori imprevisti possono comportarne un malfunzionamento o peggio un crash, e quest'ultima è proprio l'effetto che vogliamo evitare assolutamente.

 

Tramite la gestione delle eccezioni è possibile intercettare e gestire in modo opportuno tutti quegli errori, eventi imprevisti e situazioni anomali, consentendo al programma di ripristinarsi ad uno stato normale ed all'utente di riprenderne il normale uso. Un uso accorto della gestione delle eccezioni permette pertanto di scrivere programmi più robusti ed efficaci.

 

Tratteremo in questo articolo l'uso dei blocchi, delle parole chiavi, del lancio e della personalizzazione delle eccezioni in C#.

 

More...

Comments (0) E-mail del.icio.us share su Facebookfacebook Permalink Post RSS   Bookmark and Share

Hashtable e Dictionary in C Sharp

di: Giorgio Borelli - del: 13 February 2010
Filed Under: C#

Guida all'uso delle classi contenitrici di dati, le Hashtable e le Dictionary delle collections del framework.NETLe Collections del .NET framework sono "oggetti" fondamentali per svolgere il ruolo di contenitori di dati, tutte le classi che implementano le Collections sono incluse nel namespasce System.Collections, e tramite esse e possibile definire strutture dati come array, liste, hashtable che ben si prestano a contenitori di dati ed alla gestione semplificata dei dati stessi, come inserimento, cancellazione, ordinamento e così via.

 

Tutte le Collections del .NET framework implementano due interfacce, ICollection e IEnumerable, che definiscono una serie di metodi e proprietà comuni che rendono le Collections utilissime per la gestione dei dati a livello di codice, troviamo infatti proprietà e metodi come Count, CopyTo, GetEnumerator che semplificano enormemente la vita allo sviluppatore.

 

Le classi facenti parte del namespace System.Collections sono: Array, ArrayList, BitArray, Dictionary, Hashtable, Queue (code), List, SortedList, Stack (pile). Ognuna di esse implementa ulteriori interfacce che ne specializzano l'uso.

 

In particolare, due di queste classi, si addicono perfettamente alla gestione dei dati in maniera indicizzata, come una rubrica od un dizionario, tramite una coppia di elementi detti chiave-valore, stiamo parlando delle Hashtable e dei Dictionary.

 

More...

Comments (3) E-mail del.icio.us share su Facebookfacebook Permalink Post RSS   Bookmark and Share

Creare un HttpHandler per la gestione delle immagini in ASP.NET

di: Giorgio Borelli - del: 09 February 2010
Filed Under: ASP.NET, C#

Creare un httphandler personalizzato per il ridimensionamento automatico delle richieste riguardanti le immagini in asp.net Gli HttpHandler sono gli oggetti del motore di ASP.NET responsabili della gestione della risposta in seguito alle richieste dei client.

 

Conoscere il funzionamento degli HttpHandler di ASP.NET permette di gestire come si vuole le risposte da dare alle richieste dei client, in quanto è possibile tramite il web.config associare un path ai tipi di risorse (file) che si vuole gestire con il proprio personalissimo HttpHandler.

 

La funzionalità degli HttpHandlers è davvero straordinaria, se ci pensiamo bene, ASP.NET mette in mano dei programmatori un potere grandissimo, quello di poter gestire come si vuole le risorse da presentare ai client. In questo modo ad esempio è possibile creare dei personali HttpHandlers per la gestione di file, report, e di qualsiasi altra risorsa web di cui la nostra applicazione web necessita, senza nemmeno interessarci di come questa effettivamente funzioni. A tal proposito, in questo articolo, proveremo ad implementare un HttpHandler per il ridimensionamento automatico delle immagini di un'applicazione Web scritta in ASP.NET.

 

More...

Comments (0) E-mail del.icio.us share su Facebookfacebook Permalink Post RSS   Bookmark and Share

Differenze tra classi astratte ed interfacce

di: Giorgio Borelli - del: 08 February 2010
Filed Under: C#

quali sono le caratteristiche e le principali differenze tra le classi astratte e le interfacce nella programmazione orientata agli oggettiLe classi astratte e le interfacce sono due concetti fondamentali della programmazione orientata agli oggetti (OOP, Object Oriented Programming), a prescindere dal linguaggio usato, sia questo Java, C++ o C#. L'importanza di conoscere i concetti teorici che stanno alla base di questi due elementi, è fondamentale per un buon programmatore; capire la differenza tra classi astratte ed interfacce permette di valutare in modo corretto quando usare l'una e quando usare l'altra.

 

Sia le classi astratte che le interfacce non possono essere instanziate poichè al loro interno definiscono soltanto i metodi e le proprietà che dovranno essere implementate dalle classi che deriveranno da esse, rappresentano pertanto un modello, oserei dire un "template", per le classi che volta derivate da esse ed instanziate ne implementeranno il comportamento.

 

Classi astratte ed interfacce, così simili tra loro, possono confondere le idee ai neo programmatori che per le prime volte si avvicinano a questi concetti ed al polimorfismo della OOP, ma sebbene le similitudini sono molte vi sono delle sottili ma fondamentali differenze concettuali che è bene avere chiare in mente, per capire quando usare una classe astratta e quando una interfaccia.

 

More...

Comments (2) E-mail del.icio.us share su Facebookfacebook Permalink Post RSS   Bookmark and Share

Creare un widget personalizzato per inserire Google AdSense in BlogEngine.NET

di: Giorgio Borelli - del: 16 January 2010
Filed Under: AdSense, ASP.NET, BlogEngine.NET, C#

Come creare un widget personalizzato di BlogEngine.NET per inserirgli il codice di Google AdSenseOrmai la piattaforma BlogEngine.NET per blog è ampiamente diffusa ed utilizzata da svariati blogger. Certo non ha ancora raggiunto i numeri di Wordpress ma si è comunque ritagliata un'ottima fetta di utenti, in continuo aumento fra l'altro.

 

Per chi non la conoscesse, BlogEngine.NET è una piattaforma di blogging sviluppata su .net framework in linguaggio C#, nata da un progetto Open Source inserito tra gli Starter Kits di ASP.NET.

 

Visto il suo sempre maggiore impiego, l'esigenze degli utenti che la utilizzano sono sempre crescenti, così la nascita di nuovi plug-in, theme e widgets la fà avvicinare ogni giorno sempre più alla sua più famosa e diretta concorrente Wordpress. Sotto alcuni punti di vista però BlogEngine.NET soffre ancora della sua relativa gioventù, ad esempio non è stato ancora creato un widget ad hoc per la gestione degli strumenti di monetizzazione messi a disposizione dal web. 

 

In questo articolo allora voglio mostrarvi come dare un ulteriore tocco in più a questa stupenda piattaforma per blog (che io stesso uso), realizzando un widget personalizzato per BlogEngine.NET nel quale inserire lo script del codice di Google AdSense a cui tutti noi blogger siamo largamente affezionati, andiamo a scoprire come fare.

 

More...

Comments (7) E-mail del.icio.us share su Facebookfacebook Permalink Post RSS   Bookmark and Share

Algoritmo Bubble Sort in C#

di: Giorgio Borelli - del: 10 January 2010
Filed Under: C#

Algoritmo di ordinamento Bubble Sort sviluppato in C#L'ordinamento in informatica è sicuramente una delle funzionalità più necessarie ed importanti, uno tra gli algoritmi maggiormente noti ed utilizzati per la sua semplicità è l'algoritmo del Bubble Sort.

 

Il BubbleSort è un'algoritmo iterativo di ordinamento degli elementi di un array molto usato soprattutto in ambito didattico, per far apprendere le logiche e le basi della programmazione. Il suo nome deriva dal fatto che gli elementi vengono ordinati secondo una logica che li estrae dall'insieme mettendoli in cima al vettore con un'alogia grafica a quella delle bollicine che salgono in un bicchiere di spumante.

 

Dato un numero n di elementi di qualsiasi tipo, ma tali che esista una relazione di ordinamento tra di loro, l'algoritmo del bubblesort consente di ordinarli in modo crescente o decrescente. Del bubblesort solitamente vi sono svariati esempi in Linguaggio C, in questo articolo vogliamo invece fornirne una versione in Linguaggio C#, mostrando come implementare l'algoritmo del bubble sort in C# in modo efficiente.

 

Concentreremo l'attenzione solo sul cuore del bubblesort e passo passo vedremo come apportare le varie migliorie per diminuire il numero d'iterazioni ed ottimizzare al massimo l'algoritmo del bubble sort sviluppato in C#.

 

More...

Comments (0) E-mail del.icio.us share su Facebookfacebook Permalink Post RSS   Bookmark and Share

Dividere ed Unire file pdf

di: Giorgio Borelli - del: 04 November 2009
Filed Under: C#, Hack, OpenSource, Utility, Windows

Split and Merge PDF file

Continuiamo la nostra carrellata di hack sui file pdf, nei primi due articoli abbiamo visto come modificare un file pdf e nell'altro come creare un file pdf da un qualsiasi file di testo, adesso per chiudere il ciclo, ci occuperemo di come soddisfare un'altra delle esigenze molto richieste in merito all'uso di questi file, ovvero dividerli o unificarli in uno o più file pdf.

Per far ciò, faremo uso di un programmino molto semplice ed efficace, GiosPSM, dal nome del suo sviluppatore Paolo Gios, più la sigla PSM che sta proprio per PDF Split & Merge, che potete scaricare da qui, dove troverete sia la versione per windows che per console, ed è necessario per eseguire il programma aver installato sulla propria macchina almeno la versione 2.0 del framework.net.

Una volta scaricato il file zip disponibile al download, decomprimetelo e troverete un solo file al suo interno, il programma infatti non necessita di alcuna installazione, vi è solamente un eseguibile (pesa appena 145 Kb) che basta lanciare per avviare il programma (magari potete anche crearvi un bel collegamento sul desktop). More...

Comments (0) E-mail del.icio.us share su Facebookfacebook Permalink Post RSS   Bookmark and Share


Tag cloud

Ultimi Commenti

Comment RSS

Most comments

meniscus surgery meniscus surgery
17 comments
us United States
meniscus surgery meniscus surgery
16 comments
us United States
meniscus surgery meniscus surgery
13 comments
us United States
SimplyHosting Review SimplyHosting Review
6 comments
us United States
user.anonimo user.anonimo
1 comments
it Italy
lingerie lingerie
1 comments
us United States
Kecia Fonceca Kecia Fonceca
1 comments
us United States
zemne prace ponuka zemne prace ponuka
1 comments
us United States
Gregory Despain Gregory Despain
1 comments
us United States
health insurance quotes health insurance quotes
1 comments
us United States