Il metodo "Monte Carlo" è una stategia di risoluzione di problemi che utilizza la statistica: se la probabilità di un certo evento è P possiamo simulare in maniera random questo evento e ottenere P facendo (numero di volte in cui il nostro evento è avvenuto)/(simulazioni totali). Vediamo come applicare questa strategia per ottenere un'approssimazione di pi greco. Data un cerch ...

Supponiamo di avere un metodo che dobbiamo chiamare più volte e che esegue un calcolo lungo o comunque dispendioso in termini di risorse.  Supponiamo anche che non sappiamo prevedere con che parametri chiameremo questo metodo e quindi capiterà di chiamarlo più volte bella stessa esecuzione con gli stessi parametri e ripetere lo stesso calcolo più volte.  Come si ottimiz ...

Continuiamo con l'analisi del metodo LinqToSQL Where. La prima parte può essere trovata qui Cominciamo col riportare il codice del metodo: public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) { if (source == null) throw Error.ArgumentNull("source"); if (predicate == null) throw Er ...

Da questo post inizieremo ad analizzare tutti i metodi che compongono LinqToSQL e le loro rispettive implementazioni, liberamente consultabili sul sito http://referencesource.microsoft.com. La maggior parte dei metodi LinqToSQL sono extension method definiti nella classe statica Enumerable e applicabili ad oggetti che implementano l’interfaccia IEnumerable<T> (quindi la v ...

Per implementare l'interfaccia Ienumerable è necessario poter costruire una istanza di un IEnumerator. È necessario quindi implementare i metodi: - MoveNext - Reset - Dispose E la proprietà Current sia nella versione generica che in quella non generica in quanto l'interfaccia generica estende quella non generica. Per semplificare questo processo è possibile utilizzare l’i ...

Inauguriamo con questo post una serie su LinqToObject (da adesso in poi Linq) in cui andremo a studiare i sorgenti per capire in che modo questa funzionalità è stata implementata. Per chi non lo conoscesse Linq permette di eseguire numerose operazioni su delle collezioni di elementi tra cui: -          Filtrare -          Proiettare -          Medie e somme -          Inte ...

In questo articolo spieghiamo come implementare in modo semplice e rapido la funzione “ricordami” con le login social. Creando un nuovo progetto web application di tipo “web forms” è possibile scegliere la modalità di autenticazione “Individual User Accounts”. A questo punto abilitare le login social google, facebook o altre si riduce solamente alla configurazione delle varie ...

La libreria OpenXML permette di creare e modificare documenti office utilizzando C#. Tra le diverse operazioni che si possono effettuare c’è la possibilità di valorizzare una o più celle di un excel. L’interfaccia del client Excel permette in maniera molto semplice di formattare e decidere il tipo di dati di una cella e le stesse operazioni possono essere effettuate tramite l’ ...

Cosa si intende per dispatch? Per rispondere a questa domanda, osserviamo innanzitutto gli snippet di codice qua sotto  public class Base { public virtual int Metodo() { return 0; } } public class A : Base { public override int Metodo() { return 1; } } public class B : Base { public override int Metodo() { return 2; ...

Qualche tempo fa abbiamo visto qui come costruire la successione di Fibonacci sfruttando gli iteratori e l'interfaccia IEnumerable<T>. Come possiamo generalizzare questo approccio? Quello che abbiamo fatto è stato generare a partire da un seme una successione di valori finché una certa condizione non diventasse falsa. Questo procedimento non è nuovo ed è stato applica ...