Quello che mi è successo stamattina mi ha incoraggiato
ad iniziare una nuova "rubrica" nel mio weblog, dedicata a tutte quelle cose
che, a meno che non ci si legga il manuale fino all'ultima virgola (come
peraltro bisognerebbe fare), si arriverà a conoscere per pura
coincidenza.
Il primo post riguarda l'uso del carattere chiocciola in C#. Tutti sapranno
che quando si scrivono delle stringhe in C#, anteporre la chiocciola consente di
adottare una diversa politica di escape.
Così mentre questo non è consentito:
string a = "d:\myfolder";
Con l'uso della chiocciola diventa possibile:
string a = @"d:\myfolder";
Fin qui nulla di nuovo, senonché stamattina stavo facendo qualche test con il
DOM del MsHTML control e mi sono imbattuto in un uso curioso ma utilissimo della
chiocciola che sinceramente non mi era mai capitato di incontrare.
Digitando la seguente stringa:
int key = this.DOM.parentWindow.event.keyCode;
Mi sono trovato automaticamente una cosa del genere:
int key = this.DOM.parentWindow.@event.keyCode;
Di primo acchito ho creduto di aver digitato male, non sono esattamente un
dattilografo, alla tastiera. Ma rimuovendo la chiocciola evidentemente la parola
chiave "event" è stata sottolineata evidenziando l'errore. Personalmente sono
abituato a evitare come il male l'uso delle parole chiave nella nomenclatura del
mio codice, ma riconosco che, accedendo ad esempio al DOM dell'HTML che è fatto
per il Javascript sarebbe impossibile farlo senza questa scappatoia.
Naturalmente non pago ho fatto un po' di prove:
myObject.@public
myObject.@fixed
myObject.@protected
...
Consiglio: non chiamate mai public, fixed o protected un membro di una vostra
classe. Non occorre dirlo, ma magari è utile ricordarlo.
Curiosità nella curiosità, il Syntax Highlighter di SharpDeveloper non
riconosce la chiocciola come carattere di escape valido. Infatti, mentre VS.NET
indica le keyword in nero quando viene preposta la chiocciola, per l'IDE di
SharpDeveloper (che come molti sapranno è il fulcro del Code Snipped Editor di
IMHO), la lascia in blu. Sarebbe interessante sapere se si tratta di una
dimenticanza oppure se anche agli sviluppatori di questo ambiente di sviluppo
sia sfuggita questa utile feature.
Sono ovviamente andato a vedermi l'SDK, ma non sono riuscito a trovare alcun
riferimento a questo uso della chiocciola. Appena ho un attimo approfondirò le
specifiche di C#, a meno che non ci sia già qualcuno che mi segnala dove trovare
questo argomento.
powered by IMHO 1.1