• Mutimedia Web la Web Agency Italiana. Contattateci per preventivi gratuiti e consulenze nello sviluppo del vostro sito web o app Ios e Android. Professinalità e assistenza garatite!
    Immagini dei quadri e opere di: Giuseppe Lattanzio

  • Social

    [easy-social-share buttons="facebook,twitter,pinterest,linkedin,digg,stumbleupon,vk,tumblr,print,mail,del,reddit,whatsapp" counters=0 hide_names="force" template="grey-blocks-retina"]
  • WEB AGENCY

  • Sede Principale

    Multimedia Web

    Blog Studio Web

    Studio Web

    Sede a Venezia

    Web Agency Venezia

    Sede a New York

    Nyc Web Design

    Sede International

    Web Designer International

    Sito Demo One Page

    Spaghetti Web

    Landing page

    Savinus

  • smartphone

    Trovaci sul tuo smartphone

  • web-designer-ancona
  • AGENZIA WEB ITALIA

Home / News / C# 10 introduce il costrutto CallerArgumentExpression

C# 10 introduce il costrutto CallerArgumentExpression


La nuova versione di C# 10 porta con sé numerose novità, che aggiungono diverse funzionalità ad un linguaggio già molto ricco. Tra queste, ce n’è una molto interessante, che era già stata oggetto di discussione prima del rilascio di C# 8: la CallerArgumentExpression.

In questo articolo cercheremo di capire di che si tratta, e come può agevolare la programmazione in C#.

CallerArgumentExpression: come funziona su C# 10

A partire da C# 10, è possibile utilizzare la sintassi [CallerArgumentExpression(<nome parametro>)] per richiedere al compilatore di acquisire l’espressione usata per il parametro specificato. Analizziamo questo esempio:


using System.Runtime.CompilerServices;
void Function(int a, int b, [CallerArgumentExpression("a")] string c = "", [CallerArgumentExpression("b")] string d = "")
{
    Console.WriteLine($"Ottenuto {a} dalla espressione '{c}'");
    Console.WriteLine($"Ottenuto {b} dalla espressione '{d}'");
}

Utilizzando la definizione di Function appena vista, a tempo di compilazione ogni chiamata sarà in realtà preprocessata dal compilatore stesso. Supponendo ad esempio di eseguire la funzione con:


int x = 1;
int y = 2;
Function(x, y);

Il codice sarà tradotto come segue:


int x = 1;
int y = 2;
Function(x, y, "x", "y");

Possiamo addirittura immaginare scenari meno ovvi, come il seguente:


Function(int.Parse("2") + 1 + Math.Max(2, 3), 10 - 72);

Con quest’ultimo esempio, il compilatore produrrà il codice seguente:


Function(int.Parse("2") + 1 + Math.Max(2, 3), 10 - 72, "int.Parse("2") + 1 + Math.Max(2, 3)", "10 - 72");

Di conseguenza, l’esecuzione di questa espressione genererà il seguente output:


Ottenuto 3 dalla espressione 'int.Parse("2") + 1 + Math.Max(2, 3)'
Ottenuto -62 dalla espressione '10 - 72'

Usi di CallerArgumentExpression

L’uso più comune di questo costrutto sintattico è chiaramente nell’ambito del testing, e può semplificare il processo di verifica degli argomenti. Inoltre, può essere comodo utilizzarlo per il debugging, agevolando l’implementazione di log più informativi, che includano sia l’output che le espressioni che lo hanno generato.

CallerArgumentExpression non è l’unica novità introdotta in C# 10: chi volesse approfondire, può trovare tutti i dettagli sulle nuove funzionalità direttamente sull’apposita pagina della documentazione ufficiale.

Fonte: Dixin’s Blog



Source link