c# - 変更 - asp net<% %>




「本体を宣言する必要があります」というコンパイラエラーを再現しようとしています (2)

あなたはC#6を実装しているVisual Studio 2015を使用しています.Net 4をターゲットにしているという事実は無関係です.C#6の言語機能のほとんどは、フレームワーク機能に全く依存しません。 使用しているC#6コードは、現代のCLRやフレームワークの機能を参照することなく簡単にコンパイルすることができます。言語デザイナーが決定したら、.NET 1.0で動作する可能性があります:)

ここでエラーを表示するには、言語レベルをC#5に設定する必要があります。 プロジェクトプロパティ/ビルド/詳細ダイアログでそれを行います:

このエラーが発生します:

エラーCS8026:C#5では '読み取り専用で自動的に実装されるプロパティ'機能は使用できません。言語バージョン6以上を使用してください。

確かにそれはあなたが実際に見たいと思ったエラーではありません - 私はあなたがその正確なエラーを得るためにコンパイラの以前のバージョンを使う必要があると思います。

私は、Webサイトで与えられた正確なコードでC#コンパイラエラーCS0840を再現しようとしています:

class Test36
{
    public int myProp { get; } // CS0840

    // to create a read-only property
    // try the following line instead
    public int myProp2 { get; private set; }

}

public Form1()
{
    InitializeComponent();

    Test36 test = new Test36();
}

Visual Studio Community 2015を使用して.NET 4.0で実行しています。驚いたことに、私はそれを再現できません。 コンパイラはエラーをスローしません:

なぜコンパイラはエラーを投げていないのですか?


私はあなたがコンストラクタ(別名読み取り専用プロパティ )からのみ設定されるプロパティを指定できるC#6でVisual Studio 2015を使用しているからです。

次の例を参照してください。

class Test
{
    public Test() // <-- this one does compile since it is the constructor
    {
        MyProp = 1;
    }

    public void SomeMethod() // <-- this one doesn't compile
    {
        MyProp = 1;
    }

    public int MyProp { get; } // <-- no CS0840 any more!
}




visual-studio-2015