﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>C#, .NET, Java, Php, Python, Wordpress, Windows, Linux... &#187; C#</title>
	<atom:link href="http://www.marcobruni.info/category/c/feed" rel="self" type="application/rss+xml" />
	<link>http://www.marcobruni.info/wordpress</link>
	<description>Programmatore, Sviluppatore, Sistemista e Consulente Informatico: quando una passione è anche una professione.</description>
	<lastbuilddate>Fri, 20 Jan 2012 07:03:13 +0000</lastbuilddate>
	<language>en</language>
	<sy:updateperiod>hourly</sy:updateperiod>
	<sy:updatefrequency>1</sy:updatefrequency>
	<generator>http://wordpress.org/?v=</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Neal Gafter parla di Java sotto la gestione Oracle</title>
		<link>http://www.marcobruni.info/wordpress/neal-gafter-parla-di-java-sotto-la-gestione-oracle.html</link>
		<comments>http://www.marcobruni.info/wordpress/neal-gafter-parla-di-java-sotto-la-gestione-oracle.html#comments</comments>
		<pubdate>Thu, 15 Sep 2011 04:38:57 +0000</pubdate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[java]]></category>

		<guid ispermalink="false">http://www.marcobruni.info/wordpress/?p=2829</guid>
		<description><![CDATA[Il dipendente Microsoft Neal Gafter, che fu il progettista principale e realizzatore del Java SE 4 e 5 che ha portato molti miglioramenti al linguaggio e ora lavora per Microsoft sui Linguaggi per la piattaforma NET, discute l&#8217;impatto dell&#8217;acquisizione di Oracle di Sun su Java, consente la possibilità di aggiungere stack segmentato e un meta-oggetto [...]]]></description>
			<content:encoded><![CDATA[<p>Il dipendente Microsoft <a href="http://www.gafter.com/~neal/" title=" Neal Gafter" target="_blank">Neal Gafter</a>, che fu il progettista principale e realizzatore del Java SE 4 e 5 che ha portato molti miglioramenti al linguaggio e ora lavora per Microsoft sui Linguaggi per la piattaforma NET, <a href="http://www.infoq.com/articles/neal-gafter-on-java" title="discussione sull'impatto dell'acquisizione di Oracle di Sun su Java" target="_blank">discute l&#8217;impatto dell&#8217;acquisizione di Oracle di Sun su Java</a>, consente la possibilità di aggiungere stack segmentato e un meta-oggetto del protocollo di Java, e offre alcune indicazioni sul confronto tra Java e C#/.NET</p>
]]></content:encoded>
			<wfw:commentrss>http://www.marcobruni.info/wordpress/neal-gafter-parla-di-java-sotto-la-gestione-oracle.html/feed</wfw:commentrss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8216;Cosmos&#8217; un sistema operativo basato su C#</title>
		<link>http://www.marcobruni.info/wordpress/cosmos-un-sistema-operativo-basato-su-c.html</link>
		<comments>http://www.marcobruni.info/wordpress/cosmos-un-sistema-operativo-basato-su-c.html#comments</comments>
		<pubdate>Tue, 06 Sep 2011 03:16:35 +0000</pubdate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[sistemaoperativo]]></category>
		<category><![CDATA[sistema operativo]]></category>

		<guid ispermalink="false">http://www.marcobruni.info/wordpress/?p=2812</guid>
		<description><![CDATA[Esiste un nuovo sistema operativo chiamato Cosmos sviluppato interamente in C#. Essa mostra che è possibile scrivere un kernel di un sistema operativo completo senza C. Hai bisogno di Visual Studio per compilarlo ed eseguirlo e Mono non è supportato. Comunque il codice sorgente può essere compilato con Visual Studio Express editions, presto sarà supportato [...]]]></description>
			<content:encoded><![CDATA[<p>Esiste un nuovo sistema operativo chiamato <a href="http://www.gocosmos.org/index.en.aspx" title="Sistema operativo cosmos" target="_blank">Cosmos</a> sviluppato interamente in <a href="http://it.wikipedia.org/wiki/C_sharp" title="C sharp, la definizione in wikipedia" target="_blank">C#</a>. Essa mostra che è possibile scrivere un kernel di un sistema operativo completo senza <a href="http://it.wikipedia.org/wiki/C_(linguaggio)" title="Linguaggio C, la definizione in wikipedia" target="_blank">C</a>. Hai bisogno di Visual Studio per compilarlo ed eseguirlo e <a href="http://it.wikipedia.org/wiki/Mono_(progetto)" title="Mono, la definizione di wikipedia" target="_blank">Mono</a> non è supportato. Comunque il codice sorgente può essere compilato con Visual Studio Express editions, presto sarà supportato anche <a href="http://it.wikipedia.org/wiki/VB.NET" title="Vb.NET, la definizione di wikipedia" target="_blank">VB.NET</a></p>
]]></content:encoded>
			<wfw:commentrss>http://www.marcobruni.info/wordpress/cosmos-un-sistema-operativo-basato-su-c.html/feed</wfw:commentrss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[VIDEO] Impara a programmare in C#: 3 Lezione &#8211; WinForms</title>
		<link>http://www.marcobruni.info/wordpress/video-impara-a-programmare-in-c-3-lezione-winforms.html</link>
		<comments>http://www.marcobruni.info/wordpress/video-impara-a-programmare-in-c-3-lezione-winforms.html#comments</comments>
		<pubdate>Sun, 06 Feb 2011 07:08:00 +0000</pubdate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[corso c#]]></category>
		<category><![CDATA[programmazione]]></category>

		<guid ispermalink="false">http://www.marcobruni.info/wordpress/?p=2009</guid>
		<description><![CDATA[Dopo giorni in cui ho avuto un calo di voce tremendo e quindi impossibilitato a realizzare le mie lezioni per i miei corsi, riprendo oggi le lezioni del corso in C#. In questa lezione andremo avanti ad analizzare gli oggetti grafici disponibili in Visual Studio C# Express 2010 ed in particolar modo le WinForms. Come [...]]]></description>
			<content:encoded><![CDATA[<p>Dopo giorni in cui ho avuto un calo di voce tremendo e quindi impossibilitato a realizzare le mie lezioni per i miei corsi, riprendo oggi le lezioni del corso in C#.</p>
<p>In questa lezione andremo avanti ad analizzare gli oggetti grafici disponibili in Visual Studio C# Express 2010 ed in particolar modo le WinForms.</p>
<p>Come sempre per una migliore visione vi consiglio di vedere il video a tutto schermo cliccando sul bottone di youtube con le 4 frecce.</p>
<p><span id="more-2009"></span></p>
<p><iframe title="YouTube video player" width="560" height="345" src="http://www.youtube.com/embed/8fugMje5bp4?hd=1" frameborder="0" allowfullscreen></iframe></p>
<p><a href="http://www.marcobruni.info/wordpress/video-impara-a-programmare-in-c-1-lezione-come-iniziare.html">1 Lezione: Come Iniziare ?</a></p>
<p><a href="http://www.marcobruni.info/wordpress/video-impara-a-programmare-in-c-2-lezione-hello-world.html">2 Lezione: Hello World</a></p>
<p>Domande?</p>
]]></content:encoded>
			<wfw:commentrss>http://www.marcobruni.info/wordpress/video-impara-a-programmare-in-c-3-lezione-winforms.html/feed</wfw:commentrss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[VIDEO] Impara a programmare in C#: 2 Lezione &#8211; Hello World</title>
		<link>http://www.marcobruni.info/wordpress/video-impara-a-programmare-in-c-2-lezione-hello-world.html</link>
		<comments>http://www.marcobruni.info/wordpress/video-impara-a-programmare-in-c-2-lezione-hello-world.html#comments</comments>
		<pubdate>Mon, 17 Jan 2011 09:00:00 +0000</pubdate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[corso c#]]></category>
		<category><![CDATA[programmazione]]></category>

		<guid ispermalink="false">http://www.marcobruni.info/wordpress/?p=1942</guid>
		<description><![CDATA[Continua il corso Impara a programmare in C# con la seconda lezione in cui creiamo un programmino Windows Form che visualizza il messaggio Hello World classico primo scoglio quando si impara un nuovo linguaggio di programmazione. Continua a leggere se vuoi vedere il video della lezione: 1 Lezione: [Video] Impara a programmare in C#: Come [...]]]></description>
			<content:encoded><![CDATA[<p>Continua il corso Impara a programmare in C# con la seconda lezione in cui creiamo un programmino Windows Form che visualizza il messaggio Hello World classico primo scoglio quando si impara un nuovo linguaggio di programmazione. Continua a leggere se vuoi vedere il video della lezione:</p>
<p><span id="more-1942"></span></p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/GIIKU9HnpUw?fs=1&amp;hl=it_IT&amp;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/GIIKU9HnpUw?fs=1&amp;hl=it_IT&amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p><a href="http://www.marcobruni.info/wordpress/video-impara-a-programmare-in-c-1-lezione-come-iniziare.html" target="_blank">1 Lezione: [Video] Impara a programmare in C#: Come Iniziare ?</a></p>
]]></content:encoded>
			<wfw:commentrss>http://www.marcobruni.info/wordpress/video-impara-a-programmare-in-c-2-lezione-hello-world.html/feed</wfw:commentrss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[Video] Impara a programmare in C#: 1 Lezione &#8211; Come Iniziare ?</title>
		<link>http://www.marcobruni.info/wordpress/video-impara-a-programmare-in-c-1-lezione-come-iniziare.html</link>
		<comments>http://www.marcobruni.info/wordpress/video-impara-a-programmare-in-c-1-lezione-come-iniziare.html#comments</comments>
		<pubdate>Sun, 09 Jan 2011 16:32:23 +0000</pubdate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[corso c#]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[video]]></category>

		<guid ispermalink="false">http://www.marcobruni.info/wordpress/?p=1766</guid>
		<description><![CDATA[Con questo ScreenCast che è una registrazione digitale dell&#8217;output dello schermo (Come uno screenshot è un&#8217;istantanea del monitor dell&#8217;utente, lo screencast è un insieme di fotogrammi, registrato in un video, di ciò che l&#8217;utente visualizza sul proprio monitor&#8230;Fonte: WikiPedia) inizia il corso per imparare a programmare in C#. Pubblicherò ogni nuova lezione a metà settimana [...]]]></description>
			<content:encoded><![CDATA[<p>Con questo ScreenCast che è una registrazione digitale dell&#8217;output dello schermo (Come uno screenshot è un&#8217;istantanea del monitor dell&#8217;utente, lo screencast è un insieme di fotogrammi, registrato in un video, di ciò che l&#8217;utente visualizza sul proprio monitor&#8230;Fonte: <a href="http://it.wikipedia.org/wiki/Screencast" target="_blank">WikiPedia</a>) inizia il corso per imparare a programmare in C#.</p>
<p>Pubblicherò ogni nuova lezione a metà settimana (con questa lezione sono andato lungo perchè ho avuto problemi tecnici di pubblicazione del video ed un virus intestinale che mi ha messo KO) in cui affronterò un passo per volta tutte le tappe per imparare a programmare in Visual Studio C#. Dopo il salto troverete i Video/ScreenCast della prima lezione.</p>
<p><span id="more-1766"></span></p>
<p><strong>1 PARTE</strong><br />
<img src="http://www.marcobruni.info/wp-content/plugins/flash-video-player/default_video_player.gif" /></p>
<p><strong>2 PARTE</strong><br />
<img src="http://www.marcobruni.info/wp-content/plugins/flash-video-player/default_video_player.gif" /></p>
<p>Per scaricare Visual Studio Express ecco il link: <a href="http://www.microsoft.com/express/" target="_blank">http://www.microsoft.com/express/</a></p>
]]></content:encoded>
			<wfw:commentrss>http://www.marcobruni.info/wordpress/video-impara-a-programmare-in-c-1-lezione-come-iniziare.html/feed</wfw:commentrss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>LINQ to SQL: Disegnare gli oggetti in C#, prima di creare il DB</title>
		<link>http://www.marcobruni.info/wordpress/linq-to-sql-disegnare-gli-oggetti-in-c-prima-di-creare-il-db.html</link>
		<comments>http://www.marcobruni.info/wordpress/linq-to-sql-disegnare-gli-oggetti-in-c-prima-di-creare-il-db.html#comments</comments>
		<pubdate>Mon, 27 Dec 2010 08:50:34 +0000</pubdate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[dotnet]]></category>
		<category><![CDATA[linq]]></category>
		<category><![CDATA[programmazione]]></category>

		<guid ispermalink="false">http://www.marcobruni.info/wordpress/?p=1440</guid>
		<description><![CDATA[Non sto dicendo che si dovrebbe eliminare la pianificazione del database dai documenti di progettazione di un nuovo applicativo. Niente affatto. La progettazione del database è una parte importante della processo di sviluppo e non dovrebbe mai essere trascurato, se necessario. Allo stesso tempo, a volte è più facile iniziare il processo di progettazione in [...]]]></description>
			<content:encoded><![CDATA[<p>Non sto dicendo che si dovrebbe eliminare la pianificazione del database dai documenti di progettazione di un nuovo applicativo. Niente affatto. La progettazione del database è una parte importante della processo di sviluppo e non dovrebbe mai essere trascurato, se necessario. Allo stesso tempo, a volte è più facile iniziare il processo di progettazione in un altro modo &#8211; la meno comune.</p>
<p>Dalla mia esperienza, nella progettazione di un database fin dall&#8217;inizio si dà una struttura piuttosto rigida. Dopo aver definito le tabelle e creato alcune stored procedure, gli sviluppatori iniziano a lavorare sulle loro applicazioni cercando di adattare l&#8217;applicazione alle condizioni esistenti del DB e spesso essi devono raggiungere compromessi perché una piccola modifica a una tabella di DB può rovinare tutta una catena di relazioni tra tabelle.</p>
<p><span id="more-1440"></span></p>
<p>La tecnica di cui vorrei parlare è chiamata <a href="http://it.wikipedia.org/wiki/Object-relational_mapping" target="_blank">ORM, o object-relational mapping</a> . Al suo centro è l&#8217;idea che specifiche tipologie di informazioni o proprietà possono essere facilmente convertite in valori che possono essere memorizzati in un database (nella maggior parte dei casi, basato su SQL) &#8211; dunque, semplici (scalari), tipi di valore.</p>
<p>Per fare un esempio, se si dispone di un oggetto di tipo di veicolo che è un insieme di proprietà (ad esempio, peso, velocità, colore), non è possibile salvarlo direttamente in un database SQL come un oggetto &#8211; è necessario convertire ogni singola proprietà in uno tipo semplice e memorizzarli nel contesto di una entità (riga) che rappresenterà l&#8217;oggetto del veicolo.</p>
<p>Facciamo un esempio di come questo viene fatto in C#, voglio creare una classe molto semplice che possa rappresentare un modello di dati e utilizza LINQ to SQL per creare una base di dati intorno ad esso. E sebbene <a href="http://it.wikipedia.org/wiki/Object_Role_Modeling" target="_blank">LINQ to SQL</a> viene lentamente sostituito da Entity Framework, per questo breve tutorial sarà sufficiente per acquisire familiarità con alcuni dei concetti di base.</p>
<p>Ecco la classe base che rappresenta un veicolo in cui VIN è l&#8217;identificativo univoco:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">public class Veicolo
<span style="color: #009900;">&#123;</span>
    public string VIN <span style="color: #009900;">&#123;</span> get<span style="color: #339933;">;</span> internal set<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
    public string Tipo <span style="color: #009900;">&#123;</span> get<span style="color: #339933;">;</span> set<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
    public string Nome <span style="color: #009900;">&#123;</span> get<span style="color: #339933;">;</span> set<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
    public DateTime DataFabbricazione <span style="color: #009900;">&#123;</span> get<span style="color: #339933;">;</span> set<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Prima di proseguire, assicuratevi di avere i corretti riferimenti:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">using System.<span style="color: #202020;">Data</span>.<span style="color: #202020;">Linq</span><span style="color: #339933;">;</span>
using System.<span style="color: #202020;">Data</span>.<span style="color: #202020;">Linq</span>.<span style="color: #202020;">Mapping</span><span style="color: #339933;">;</span></pre></div></div>

<p>Ecco come viene trasformata la classe per il database, che è quella che effettivamente useremo nel codice:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #009900;">&#91;</span>Table<span style="color: #009900;">&#40;</span>Name<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;Veicoli&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span>
public class Veicolo
<span style="color: #009900;">&#123;</span>
    <span style="color: #009900;">&#91;</span>Column<span style="color: #009900;">&#40;</span>IsPrimaryKey<span style="color: #339933;">=</span><span style="color: #000000; font-weight: bold;">true</span><span style="color: #339933;">,</span>CanBeNull<span style="color: #339933;">=</span><span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">,</span>IsDbGenerated<span style="color: #339933;">=</span><span style="color: #000000; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span>
    public string VIN <span style="color: #009900;">&#123;</span> get<span style="color: #339933;">;</span> internal set<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#91;</span>Column<span style="color: #009900;">&#93;</span>
    public string Tipo <span style="color: #009900;">&#123;</span> get<span style="color: #339933;">;</span> set<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#91;</span>Column<span style="color: #009900;">&#93;</span>
    public string Nome <span style="color: #009900;">&#123;</span> get<span style="color: #339933;">;</span> set<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#91;</span>Column<span style="color: #009900;">&#93;</span>
    public DateTime DataFabbricazione <span style="color: #009900;">&#123;</span> get<span style="color: #339933;">;</span> set<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Gli attributi definiscono la struttura della tabella. Per esempio, definisco il nome della tabella quando dichiaro la classe, questo non è obbligatorio, ma è consigliabile per avere delle regole comuni di progettazione. Lo stesso concetto vale per le colonne, il cui nome viene preso direttamente dal nome delle proprietà della classe, quindi non devo impostare in modo esplicito il loro nome.</p>
<p>VIN sarà la chiave primaria &#8211; è unico, quindi è perfetto per una chiave primaria. Inoltre, non viene generato dal DB e non può essere nullo. Se usassi un semplice campo ID per la chiave primaria, allora non ci sarebbe assolutamente nessun problema nel fissare i valori perchè verrebbero generati direttamente dal DB con un meccanismo di auto-incremento.</p>
<p>Così ora c&#8217;è una struttura. Come diventa un DB? Prima di tutto, la maggior parte degli oggetti di LINQ to SQL girano intorno a <a href="http://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.aspx" target="_blank">DataContext</a> che è la connessione dati . E &#8216;l&#8217;anello di congiunzione tra l&#8217;applicazione e la database. Dato che ho già una struttura di base, posso creare un&#8217;istanza di DataContext che si connette al mio database (con una stringa di connessione esistente):</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">DataContext dc <span style="color: #339933;">=</span> new DataContext<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Data Source=(local);Integrated Security=SSPI;Initial Catalog=VEICOLI_DB;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Ora che c&#8217;è una connessione, è possibile passare una tabella all&#8217;istanza di DataContext:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">dc.<span style="color: #202020;">GetTable</span><span style="color: #339933;">&lt;</span>Veicolo<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Questa istruzione ritornerà come risultato il set di tabelle che sono basate sull&#8217;entità veicolo. Siccome non ci sono tabelle definite sull&#8217;entità passata, una tabella verrà creata secondo le regole definite dagli attributi. Alla fine io devo solo fare questo per creare il database:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">dc.<span style="color: #202020;">CreateDatabase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Anche se il database definito nella stringa di connessione non esiste, sarà creato. Ora, diamo uno sguardo al server per vedere se il database effettivamente c&#8217;è:</p>
<p><a href="http://www.marcobruni.info/wp-content/uploads/2010/12/sqlserver_veicoli.png"><img src="http://www.marcobruni.info/wp-content/uploads/2010/12/sqlserver_veicoli-300x212.png" alt="Sql Server Veicoli" title="Sql Server Veicoli" width="300" height="212" class="aligncenter size-medium wp-image-1500" /></a></p>
<p>Come si può vedere, l&#8217;utilizzo di un ORM consente di risparmiare tempo (e un pò di righe di codice), quando si tratta di creare un DB in base alle esigenze specifiche di un applicazione. Naturalmente il maggior vantaggio si otterrà con progetti complessi, questa semplificazione porta alcune volte gli sviluppatori a commettere degli errori come la non ottimizzazione delle query.</p>
<p>Continua a seguirmi perchè prossimamente approfondirò l&#8217;argomento, e tu hai mai usato LINQ to SQL in C#?</p>
]]></content:encoded>
			<wfw:commentrss>http://www.marcobruni.info/wordpress/linq-to-sql-disegnare-gli-oggetti-in-c-prima-di-creare-il-db.html/feed</wfw:commentrss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visual Studio.NET e C#: come gestire le eccezioni e il numero di riga dell&#8217;errore</title>
		<link>http://www.marcobruni.info/wordpress/visual-studio-net-e-c-come-gestire-le-eccezioni-e-il-numero-di-riga-dellerrore.html</link>
		<comments>http://www.marcobruni.info/wordpress/visual-studio-net-e-c-come-gestire-le-eccezioni-e-il-numero-di-riga-dellerrore.html#comments</comments>
		<pubdate>Sun, 28 Nov 2010 07:24:28 +0000</pubdate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[visualstudio]]></category>

		<guid ispermalink="false">http://www.marcobruni.info/?p=590</guid>
		<description><![CDATA[Le funzionalità di gestione delle eccezioni del linguaggio C# consentono di gestire situazioni impreviste o eccezionali che si verificano durante l&#8217;esecuzione di un programma. Nella gestione delle eccezioni vengono utilizzate le parole chiave try, catch e finally per tentare di eseguire azioni che potrebbero non riuscire, per gestire gli errori e per pulire successivamente le [...]]]></description>
			<content:encoded><![CDATA[<p>Le funzionalità di gestione delle eccezioni del linguaggio C# consentono di gestire situazioni impreviste o eccezionali che si verificano durante l&#8217;esecuzione di un programma. Nella gestione delle eccezioni vengono utilizzate le parole chiave try, catch e finally per tentare di eseguire azioni che potrebbero non riuscire, per gestire gli errori e per pulire successivamente le risorse. Le eccezioni possono essere generate da Common Language Runtime (CLR), da librerie di terze parti o dal codice dell&#8217;applicazione mediante la parola chiave throw.</p>
<p>In questo esempio un metodo verifica la presenza di una divisione per zero e rileva l&#8217;errore. Senza la gestione delle eccezioni, il programma verrebbe chiuso con un errore simile al seguente: DivideByZeroException non è stata gestita.</p>
<pre lang="c#" line="1">
int DivisioneSicura(int x, int y)
{
    try
    {
        return (x / y);
    }
    catch (System.DivideByZeroException dbz)
    {
        System.Console.WriteLine("Attenzione divisione per zero!!!");

        // Stampo il messaggio di errore
        System.Console.WriteLine(dbz.Message);

        // Stampo il numero di riga del sorgente dove si trova l'errore
        System.Console.WriteLine(dbz.StackTrace);

        return 0;
    }
}
</pre>
<p><em><strong>Cenni preliminari sulle eccezioni</strong></em></p>
<p>Le eccezioni dispongono delle seguenti proprietà:</p>
<ul>
<li>Quando nell&#8217;applicazione si verifica una circostanza eccezionale, ad esempio una divisione per zero o un problema di memoria insufficiente, viene generata un&#8217;eccezione.</li>
<li>Utilizzare un blocco try intorno alle istruzioni che potrebbero generare eccezioni.</li>
<li>Quando si verifica un&#8217;eccezione all&#8217;interno del blocco try, il flusso di controllo passa immediatamente a un gestore eccezioni associato, se presente.</li>
<li>Se per una determinata eccezione non sono presenti gestori, l&#8217;esecuzione del programma verrà interrotta con un messaggio di errore.</li>
<li>Se un blocco catch definisce una variabile dell&#8217;eccezione, è possibile utilizzarlo per ottenere ulteriori informazioni sul tipo di eccezione che si è verificata.</li>
<li>Le azioni che possono generare un&#8217;eccezione vengono eseguite con la parola chiave try.</li>
<li>Un gestore eccezioni è un blocco di codice che viene eseguito quando si verifica un&#8217;eccezione. Per la definizione di un gestore eccezioni, in C# viene utilizzata la parola chiave catch.</li>
<li>Le eccezioni possono essere generate in modo esplicito da un programma mediante la parola chiave throw.</li>
<li>Gli oggetti eccezione contengono informazioni dettagliate sull&#8217;errore, tra cui lo stato dello stack di chiamate e una descrizione dell&#8217;errore, quindi per stampare la descrizione dell&#8217;errore uso l&#8217;istruzione <em>System.Console.WriteLine(dbz.Message);</em> infine per stampare il numero di riga dove si trova l&#8217;errore <em>System.Console.WriteLine(dbz.StackTrace);</em></li>
</ul>
<p>Fonte: <a href="http://msdn.microsoft.com/it-it/library/ms173160(VS.80).aspx" target="_blank">msdn.microsoft.com</a></p>
]]></content:encoded>
			<wfw:commentrss>http://www.marcobruni.info/wordpress/visual-studio-net-e-c-come-gestire-le-eccezioni-e-il-numero-di-riga-dellerrore.html/feed</wfw:commentrss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced

Served from: www.marcobruni.info @ 2012-02-09 07:31:47 -->
