1. ホーム
  2. c#

[解決済み] C#6の "Using static "機能はどのように使用するのですか?

2022-06-01 02:23:17

質問

私は、いくつかの の新機能を見ています。 C# 6 の新機能、特に "static"を使用することです。 .

静的 は新しい種類のusing節で、型の静的メンバをスコープに直接インポートすることができます。

(ブログ記事の最下部)

私が見つけたいくつかのチュートリアルによると、考え方は次のとおりです。

の代わりに

using System;

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

繰り返しの Console ステートメントを省略することができます。

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 ブログの例は間違っているのでしょうか。なぜこれが機能しないのでしょうか?


ブログの記事は現在、最新の更新を反映して更新されていますが、ブログがダウンした場合に備えて、スクリーンショットを掲載します。

どのように解決するのですか?

これらのブログ記事が書かれたときから、構文が少し変わったようです。エラーメッセージにあるように static を include 文に追加してください。

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(); .

しかし、その場合でも、プレフィックスとして PI は静的メンバではないので Math.PI; .

C# バージョン 7.2 からは、このようなことはないはずです。 const のような値は PI のような値も使用できます。