Je suis en train de jeter un œil à quelques nouvelles fonctionnalités de C # 6, en particulier, "using static" .
using static est un nouveau type de clause using qui vous permet d'importer des membres statiques de types directement dans la portée.
(En bas du billet de blog)
L'idée est la suivante, selon quelques tutoriels que j'ai trouvés, au
lieu de:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Hello world!");
Console.WriteLine("Another message");
}
}
Vous pouvez omettre l' Console
instruction répétée , en utilisant la nouvelle fonctionnalité C # 6 d'utilisation des classes statiques:
using System.Console;
// ^ `.Console` added.
class Program
{
static void Main()
{
WriteLine("Hello world!");
WriteLine("Another message");
} // ^ `Console.` removed.
}
Cependant, cela ne semble pas fonctionner pour moi. J'obtiens une erreur sur la using
déclaration, disant:
"Une
using namespace
directive ' ' ne peut être appliquée qu'aux espaces de noms; 'Console
' est un type et non un espace de noms. Considérezusing static
plutôt une directive ' '"
J'utilise Visual Studio 2015 et la version du langage de compilation est définie sur «C # 6.0»
Ce qui donne? L'exemple du blog msdn est-il incorrect? Pourquoi ça ne marche pas?
Le billet de blog a maintenant été mis à jour pour refléter les dernières mises à jour, mais voici une capture d'écran au cas où le blog tomberait en panne:
System.Math
, spécifiquementMath.PI
. Quand j'utiliseusing static System.Math
, des méthodes comme leSqrt()
travail mais pas une constante commePI
. Je dois continuer à écrireMath.PI
ou le code ne se compile pas. Je suis curieux de savoir pourquoi cela ne fonctionne pas. Dois-je soumettre une nouvelle question à ce sujet?PI
n'est pas un membre statique de laMath
classe. C'est une constante. En termes simples: le membre doit être déclaré commestatic
.using const System.Math;
:)Le
static
mot-clé sur uneusing
instruction n'importera que le seul type spécifié (et ses types imbriqués). De plus, vous ne devez plus donner le nom du type. Alors ajoutez simplement de la statique à votre utilisation.Remarque: veuillez utiliser cette fonctionnalité uniquement lorsque les deux classes sont logiquement étroitement liées, sinon cela rend la lecture du code assez difficile.
la source