2010-11-03 15 views
5

Mi chiedevo da dove si traccia la linea tra una funzione di linguaggio di programmazione e una funzione di piattaforma.lingua caratteristica vs framework

Ad esempio, è la funzione del linguaggio Linq a C# o una funzionalità .NET. Il linguaggio di programmazione funziona come una specifica per la piattaforma?

risposta

4

Questa è una linea difficile da disegnare, e LINQ è un buon esempio di questo:

+0

Sei sicuro? I tipi impliciti e i metodi di estensione sono costrutti del linguaggio, si traducono in tipi normali e normali chiamate al metodo statico in fase di compilazione. Ma i metodi di estensione specifici utilizzati in Linq sono effettivamente funzionalità di piattaforma. – Gorpik

+0

@Gorpik, hai assolutamente ragione. Risposta aggiornata –

+0

Anche i metodi di estensione devono essere implementati in C#. – Dykam

2

LINQ fa parte del Framework .Net dal momento che la versione 3.5

Potete trovare C# specification here.

3

LINQ è una funzionalità .NET in quanto è accessibile da tutte le lingue compatibili con CLS. L'istruzione yield è una funzione in linguaggio C#.

0

LINQ è una componente del quadro:

Per poter utilizzare Linq è necessario aggiungere lo spazio dei nomi "Linq". Non si può dire abotu il FileStream che è un'estensione laguage.

1

Hmm, domanda interessante. .NET è molto più simile a una libreria, tuttavia è completamente integrato nella lingua che, al fine di utilizzare molte funzionalità della lingua, è necessario includerla. Quindi suppongo che il fattore determinante sia se è necessario avere .NET incluso per la funzionalità. Nel caso di Linq, devi avere incluso .NET, quindi direi che è solo una caratteristica di .NET più di una funzionalità linguistica.

7

Credo che la risposta, nel caso del tuo esempio, sia entrambe.

I metodi di estensione che abilitano Linq sono una funzionalità di .Net, la piattaforma. Tuttavia, i costrutti del linguaggio che sono tradotti in chiamate a quei metodi di estensione sono una caratteristica del linguaggio C#. È possibile utilizzare gli stessi metodi di estensione da VB, ma non è possibile utilizzare gli stessi costrutti di linguaggio.

Allo stesso modo, è possibile utilizzare Linq in XML da entrambe le lingue, ma solo VB ha valori letterali XML.

+0

Concordato. Anche la parola chiave * dynamic * è un esempio di questo. O più grande: IL è una funzione di piattaforma. –

Problemi correlati