2010-11-03 6 views
5

Me preguntaba dónde se traza la línea entre una función de lenguaje de programación y una función de plataforma.función de idioma frente a característica de marco

Por ejemplo, Linq es una característica del lenguaje C# o una función .NET. ¿El lenguaje de programación funciona como una especificación para la plataforma?

Respuesta

4

Esa es una línea difícil de dibujar, y LINQ es un buen ejemplo de esto:

+0

¿Estás seguro? Los tipos implícitos y los métodos de extensión son construcciones de lenguaje, se traducen en tipos normales y llamadas a métodos estáticos normales en tiempo de compilación. Pero los métodos de extensión específicos utilizados en Linq son, de hecho, características de la plataforma. – Gorpik

+0

@Gorpik, tienes toda la razón. Respuesta actualizada –

+0

También es necesario implementar métodos de extensión en C#. – Dykam

3

LINQ es una función .NET ya que se puede acceder desde todos los idiomas compatibles con CLS. La instrucción yield es una característica de lenguaje C#.

0

LINQ es un componente del marco:

Para utilizar LINQ hay que añadir el espacio de nombres "LINQ". No se puede decir abotu FileStream que es una extensión de idioma.

1

Hmm, pregunta interesante. .NET realmente se parece más a una biblioteca, sin embargo, está completamente integrado en el lenguaje que para poder utilizar muchas características del idioma, debe incluirlo. Entonces, supongo que el factor determinante es si debe o no tener .NET incluido para que la característica exista. En el caso de Linq, debe tener .NET incluido, así que diría que es solo una característica de .NET más que una función de idioma.

7

Creo que la respuesta, en el caso de su ejemplo, es ambas.

Los métodos de extensión que habilitan Linq son una característica de .Net, la plataforma. Sin embargo, las construcciones de lenguaje que se traducen en llamadas a esos métodos de extensión son una característica del lenguaje C#. Puede usar los mismos métodos de extensión de VB, pero no puede usar las mismas construcciones de lenguaje.

De la misma manera, puede utilizar Linq a XML desde ambos idiomas, pero solo VB tiene literales XML.

+0

De acuerdo. La palabra clave * dynamic * es un ejemplo de esto también. O más grande: IL es una función de plataforma. –

Cuestiones relacionadas