Tutti i post taggati come: ‘c#’

Feb
6

c#: tipi nullable (int? char? double? float?)

Postato in  
Technology

Recentemente ho scoperto, grazie ad uno sviluppatore conosciuto da poco, l’esistenza dei tipi nullable.
Introdotti a partire dal framework .net 2.0, consentono di assegnare ad una variabile il valore null, oltre il normale range di valori.

Nel caso di una variabile int, oltre il range di valori compreso tra -2147483648 e 2147483647, sarà possibile assegnare anche il valore null.

Ancora: nel caso in cui dovessimo definire una variabile di tipo bool, oltre ai due stati true e false, sarà possibile lavorare su un terzo stato, lo stato null.

Questa tipologia di dato torna utile soprattutto nel caso in cui dovessimo trovarci a testare il valore di una variabile cui associamo un dato estratto da un database. In condizioni normali, dovremmo usare il seguente costrutto:

1
2
3
4
if (valore == null)
    x = -1;
else
    x = valore;

i tipi nullable possiedono due proprietà pubbliche e read-only: hasValue e Value.

* HasValuerestituisce true nel caso la variabile abbia un valore diverso da null
* Valuerestituisce il valore assegnato alla variabile nel caso sia diverso da null, oppure un’eccezione InvalidOperationException;

Per cui, potremmo pensare di testare il valore estratto da un database nel seguente modo:

1
2
3
4
5
int? x = campo_db;
if (x.HasValue)
    System.Console.WriteLine(x.Value);
else
    System.Console.WriteLine("Undefined");

Related Posts:

Nov
7

Visual Studio 2005: resharper 3.1

Postato in  
Technology

Dopo qualche mese di utilizzo intensivo, ho deciso di disinstallare resharper 3.1 plugin per visual studio 2005. Difatti, a parte due o tre funzionalità davvero utili la spesa teorica prevista dalla licenza non trova giustificazioni.

Personalmente, ho trovato molto utile la possibilità di analizzare il codice sia nel tentativo di ottimizzarlo, sia nel tentativo di ovviare ad eventuali problemi a run-time, come ad esempio le NullReferenceException. Il plugin in tal senso, risulta molto utile grazie ad accorgimenti grafici semplici ed intuitivi: icone colore rosso per errori gravi, arancioni per possibili warning, verde nel caso in cui il codice sia ok.

Inoltre è utile la creazione di proprietà a partire dalla dichiarazioni di membri, siano essi privati, pubblici o protetti, tramite un comodo wizard all’interno del quale ci viene data la possibilità di definire le diverse caratteristiche della proprietà che stiamo andando a creare.

Il contro più grave, che mi ha poi portato alla disinstallazione del plugin, è il dover caricare in memoria il contenuto dei files aperti nell’IDE: ciò comporta non solo un notevole dispendio di ram (visual studio ne pretendeva regolarmente almeno 600/700 MB) ma anche e soprattutto un tempo di avvio davvero inaccettabile.

Successivamente al passaggio di disinstallazione, scompare la possiiblità di avere l’intellisense. Per riattivarlo, basta andare nel menu Opzioni->Editor di testo->C# e rimettere il check “Elenco membri automatico”.

Related Posts:

Oct
26

Nuovo logo .NET

Postato in  
Technology

Nuovo logo .NET

Related Posts:

Aug
24

Subsonic 2.1: GetCount() e GetRecordCount() System.InvalidCastException

Postato in  
Technology

Dopo una serie di polemiche sul forum, pare che finalmente siano stati risolti i problemi di Subsonic, relativi ai due metodi GetCount() e GetRecordCount() che potete richiamare sull’oggetto Select.

In realtà, la versione 2.1 final non è fixata. Potete farlo manualmente, modificando i sorgenti, facendo un rebuild della solution e sovrascrivendo il file Subsonic.dll che state utilizzando.

Fix:
Modify SqlQuery/SqlQuery.cs : line 1241
from
count = (int)scalar;
to
count = (int)Utility.ChangeType(scalar, typeof(int));

(via codplex)

Related Posts:

Feb
16

Microsoft Visual Studio: Microsoft.VDesigner ErrorCode:-1

Postato in  
Technology

L’area di progettazione dei DataSet, fornita da Visual Studio 2005, consente di agganciare una o più tabelle, eventualmente correlate tra loro, grazie ad una serie di semplici click, o drag&drop dal DataSource configurato.

Può capitare che l’IDE visualizzi l’errore “Microsoft.VDesigner ErrorCode:-1″. La motivazione sta nel fatto che si sta cercando di inserire all’interno del DataSet una tabella nella quale risulta assente la chiave primaria, sebbene sia stata definita una chiave UNIQUE.

Per risolvere l’errore, basterà modificare la struttura della tabella da aggiungere, inserendo una chiave primaria.

Related Posts:

Feb
6

c# MysqlAdapter: query select like wildcard %

Postato in  
Technology

Premessa:

  1. Installare il driver connector MySQL Connector .NET 5.1.4 ta
  2. si vuole estrarre da un database mysql un determinato
    numero di righe, sulla base di una stringa di testo passata da un campo TextBox.

Ipotizziamo di dover eseguire una clausola SQL del tipo:

1
2
SELECT oid, nome, cognome 
FROM tabella1 WHERE nome LIKE '%pippo%'

Creiamo il MysqlDataAdapter e la query parametrizzata da eseguire:

1
2
SELECT oid, nome, cognome 
FROM tabella1 WHERE nome LIKE ?nome

Grazie a Visual Studio 2005 è abbastanza banale impostare tutte le proprietà del parametro ?nome, per cui, ci basterà semplicemente richiamare il metodo FillBy nel seguente modo:

1
2
this.myTableAdapter.FillBy(this.myDataSet.tabella1
, '%'+ this.tbox_nomecognome.Text+ '%');

La particolarità sta nel fatto che se andassimo ad inserire le wildcard % direttamente nella clausola sql creata tramite Visual Studio, essa non tornerebbe alcun valore perchè il motore ado.net non riesce a sostituire correttamente il valore del parametro. Per questo motivo, si devono passare le wildcard % come fossero semplici caratteri.

Viva la Microsoft – dove tutto è bello fin quando si sta nel loro seminato, appena se ne esce si perdono 5 ore di lavoro.

Related Posts: