Estoy echando un vistazo a un par de nuevas características en C # 6, específicamente, "usando estática" .
using static es un nuevo tipo de cláusula using que le permite importar miembros estáticos de tipos directamente al alcance.
(Parte inferior de la publicación del blog)
La idea es la siguiente, según un par de tutoriales que encontré, en
lugar de:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Hello world!");
Console.WriteLine("Another message");
}
}
Puede omitir la Console
declaración repetida , usando la nueva característica C # 6 de usar clases estáticas:
using System.Console;
// ^ `.Console` added.
class Program
{
static void Main()
{
WriteLine("Hello world!");
WriteLine("Another message");
} // ^ `Console.` removed.
}
Sin embargo, esto no parece funcionar para mí. Recibo un error en la using
declaración que dice:
"Una '
using namespace
' directiva solo se puede aplicar a espacios de nombres; 'Console
' es un tipo, no un espacio de nombres. Considere unausing static
directiva ' ' en su lugar"
Estoy usando Visual Studio 2015 y tengo la versión del lenguaje de compilación configurada en "C # 6.0"
¿Lo que da? ¿Es incorrecto el ejemplo del blog de msdn? ¿Por qué no funciona esto?
La publicación del blog ahora se ha actualizado para reflejar las últimas actualizaciones, pero aquí hay una captura de pantalla en caso de que el blog deje de funcionar:
System.Math
, específicamenteMath.PI
. Cuando usousing static System.Math
, métodos comoSqrt()
funcionan pero no como constantesPI
. Tengo que seguir escribiendoMath.PI
o el código no se compila. Tengo curiosidad por saber por qué esto no funciona. ¿Debo enviar una nueva pregunta para esto?PI
no es un miembro estático de laMath
clase. Es una constante. En pocas palabras: el miembro debe declararse comostatic
.using const System.Math;
:)La
static
palabra clave en unausing
declaración importará solo el tipo especificado (y sus tipos anidados). Además, ya no debe dar el nombre del tipo. Así que solo agrega estática a tu uso.Nota: Utilice esta función solo cuando las dos clases estén estrechamente relacionadas lógicamente; de lo contrario, la lectura del código será bastante difícil.
fuente