C#

VS2005 Code Snippet

I code snippet non sono amati da tutti, ma spesso sono mooolto comodi tanto che Microsoft ha rilasciato un set di code snippet per C# non direttamente installati con Visual Studio 2005 (VB ne è fornitissimo): http://msdn.microsoft.com/vstudio/downloads/codesnippets/default.aspx Thanks to Scott Dockendorf  

posted @ venerdì 17 febbraio 2006 17:53 | Feedback (87)

I Parametri: questi strani oggetti...

Ancora oggi trovo diversi post in forum o newsgroup di gente che si lamenta perchè non funziona questa query, perchè non mi riconosce quel dato, perchè non riesco ad eseguire..., ecc...ecc. Poi vedi che utilizzano ancora query costruite "onthefly" che, nel 99% dei casi, risultano essere la causa di quelle "stranezze". Non so se il problema esiste ancora per leggerezza, pigrizia o ignoranza (nel senso che ignora ) dello sviluppatore di turno, ma usare i parametri pare così brutto? Circa 8/9 anni fa, quando muovevo i primi passi con ASP e le query SQL, ammetto che ero solito anch'io utilizzare questo sistema....

posted @ venerdì 3 febbraio 2006 01:15 | Feedback (32)

Language Specification

...un breve promemoria: C# 1.2, 2.0, ECMA, ChmFile C++/CLI Working Draft 1.9, Jan 2005 Visual Basic .NET 7.0 8.0 Java PDF La lista viene aggiornata qui. powered by IMHO 1.2

posted @ venerdì 10 giugno 2005 02:19 | Feedback (2)

Pubblicata la lista delle breaking changes del .NET Framework 2.0 rispetto alla 1.1

Pubblicata la lista dei cambiamenti applicati al .NET Framework 2.0 rispetto alla versione 1.1 e aggiornata alla Beta2. Di seguito i documenti pubblicati: Differenze e problematiche di deployment con il .NET Framework 2.0 L'elenco delle Breaking Changes in formato chm Fonte: ASPItalia.com Attenzione!!! I documenti segnalati riportano ciò che è stato modificato ma non le novità!

posted @ giovedì 26 maggio 2005 12:49 | Feedback (11)

Cryptography Application Block

...e ho detto tutto!!! ;-) http://msdn.microsoft.com/security/default.aspx?pull=/library/en-us/dnpag2/html/crypto1.asp

posted @ venerdì 18 febbraio 2005 18:26 | Feedback (11)

ADO.NET 2.0: Improve your performance...

Probabilmente alcuni di voi già ne sono a conoscenza, ma la lettura di questo articolo ha suscitato in me parecchie curiosità che mi hanno portato a replicare il test eseguito dall'autore sulla mia macchina. Così l'altro giorno ho creato ed eseguito due applicazioni console, stesso codice ma su diverse versioni, e devo dire di essere rimasto a bocca aperta: Codice C# DataTable dt = new DataTable();DataColumn id = dt.Columns.Add("ID", System.Type.GetType("System.Int32"));id.Unique = true;dt.Columns.Add("test", System.Type.GetType("System.String"));DateTime dtStart = DateTime.Now;Random rnd = new Random(1);Console.WriteLine("Start at {0}", dtStart.ToString());for(int i=0;i<1000000;i++){    DataRow dr = dt.NewRow();    dr["ID"] = rnd.Next();    dr["test"] = DateTime.Now.ToString();    try    {        dt.Rows.Add(dr);    }    catch(System.Data.ConstraintException ce)    {        dr["ID"] = rnd.Next();        dt.Rows.Add(dr);    }    Console.WriteLine("Row {0} added", i);}Console.WriteLine("End at {0} in {1}", dtStart.ToString(), DateTime.Now.Subtract(dtStart)); .NET Framework 1.1 .NET Framework 2.0 Salta immediatamente all'occhio il tempo di esecuzione: il fw 1.1 impiega 31 minuti mentre il 2.0 quasi 2 minuti!!! Questo perchè è stata completamente riscritta la gestione degli indici del DataTable/DataSet, come ben evidenziato nell'articolo, per renderla maggiormente scalabile. Il...

posted @ sabato 29 gennaio 2005 12:56 | Feedback (13)

Quiz Sharp: Ci provo anch'io

public class TestClass { int iVar = 100; private void MyMethod3(int iVar) { iVar = 45; } private void MyMethod2() { int iVar = 44; } private void MyMethod() { iVar = 43; } private void TestScope() { iVar = 0; MyMethod(); MyMethod2(); MyMethod3(iVar); Console.Write(iVar.ToString()); } } Qual'è il risultato dell'esecuzione del metodo TestScope? A. 45 B. 100 C. 0 D. 43 E. 44 powered by IMHO

posted @ mercoledì 1 dicembre 2004 01:44 | Feedback (16)

Recuperare il contenuto ordinato di una directory in base a filtri multipli

Se avete bisogno di recuperare l'elenco dei file contenuti in una directory ordinati, ad esempio, in base alla dimensione o alla data di creazione, e magari applicando più filtri (ad esempio: *.jpg e *.gif), utilizzate la classe DirectoryHelper qui esposta:       public sealed class DirectoryHelper       {             ///             /// Determina il tipo di ordinamento da eseguire             ///             public enum SortType             {                   MinToMax,                   MaxToMin             }             ///             /// Esegue l'ordinamento in base alla proprietà passata al costruttore             ///             private class...

posted @ giovedì 4 novembre 2004 17:15 | Feedback (18)

Stranezze dell'ereditarietà

Considerate queste classi:  public interface IMyInterface {  void Method1(); } public class ClassA:IMyInterface {  public void Method1()  {   Console.WriteLine("ClassA.Method1");  } } public class ClassB:ClassA {  new public void Method1()  {   Console.WriteLine("ClassB.Method1");  } } Considerate questo codice:  IMyInterface a = new ClassA(); a.Method1(); IMyInterface b = new ClassB(); b.Method1();  Console.ReadLine(); per quale motivo il risultato è questo? ClassA.Method1ClassA.Method1 Sembra che il runtime cerca a ritroso la classe che implementa esplicitamente l'interfaccia per eseguire il metodo corrispondente, ma non è il comportamento che ci si aspetta. Ovviamente implementando l'interfaccia anche in ClassB il tutto ritorna normale. Ci ho perso 30 minuti oggi... :-(  

posted @ martedì 19 ottobre 2004 19:05 | Feedback (1654)

P/INVOKE Wizard

Segnalo questo interessante tool di Paul Yao che consente di creare il codice C#/VB.NET per le chiamate via P/INVOKE a DLL unmanaged in C++. Semplicissimo da usare, basta aprire un file .h per ottenere il codice. http://www.paulyao.com/resources/tools/pinvoke.asp Putroppo è trial, non da la possibilità di copiare/salvare il codice ottenuto... da provare

posted @ venerdì 15 ottobre 2004 14:53 | Feedback (23)