C#6 の「static の使用」機能はどのように使用すればよいですか? 質問する

C#6 の「static の使用」機能はどのように使用すればよいですか? 質問する

私はいくつかの新機能C# 6では、具体的には、「静的使用」

静的使用型の静的メンバーをスコープに直接インポートできる新しい種類の using 句です。
(ブログ記事の下部)

私が見つけたいくつかのチュートリアルによると、アイデアは次のようになります
。代わりに:

using System;

class Program 
{ 
    static void Main() 
    { 
        Console.WriteLine("Hello world!"); 
        Console.WriteLine("Another message"); 
    } 
}

Console静的クラスを使用する C# 6 の新機能を使用すると、繰り返しステートメントを省略できます。

using System.Console;
//           ^ `.Console` added.
class Program 
{ 
    static void Main() 
    { 
        WriteLine("Hello world!"); 
        WriteLine("Another message"); 
    } // ^ `Console.` removed.
}

しかし、これは私の環境ではうまくいかないようです。ステートメントに次のようなエラーが表示されますusing:

「' using namespace' ディレクティブは名前空間にのみ適用できます。' Console' は名前空間ではなく型です。using static代わりに ' ' ディレクティブを検討してください」

私はVisual Studio 2015を使用しており、ビルド言語バージョンは「C# 6.0」

何が起こっているのでしょうか? msdn ブログの例は間違っているのでしょうか? なぜこれが機能しないのでしょうか?


ブログ投稿は最新のアップデートを反映するように更新されましたが、ブログがダウンした場合に備えてスクリーンショットを以下に示します。

ブログ

ベストアンサー1

これらのブログ投稿が書かれてから構文が若干変更されたようです。エラー メッセージに示されているように、staticinclude ステートメントに以下を追加します。

using static System.Console;
//      ^
class Program 
{ 
    static void Main() 
    { 
        WriteLine("Hello world!"); 
        WriteLine("Another message"); 
    } 
}

その後、コードがコンパイルされます。


C# 6.0 では、これは として宣言されたメンバーに対してのみ機能することに注意してくださいstatic

たとえば、次のことを考慮してくださいSystem.Math

public static class Math {
    public const double PI = 3.1415926535897931;
    public static double Abs(double value);
    // <more stuff>
}

の場合using static System.Math、 を使用できますAbs();。ただし、は静的メンバーではないため、
プレフィックスを付ける必要はあります: 。PIMath.PI;

C# バージョン 7.2 以降では、このようなことは起こらず、const次のような値もPI使用できるようになります。

おすすめ記事