はたぶん私はC#の最新バージョンで逃した何かがありますが、私には、このコードはそれがないまだ動作しないはずです。..C#のプロパティ:これはなぜ機能しますか?
public class FileManip {
public FileManip(string path) {
appPath = path;
}
private string appPath {
get;
}
//...............
}
はたぶん私はC#の最新バージョンで逃した何かがありますが、私には、このコードはそれがないまだ動作しないはずです。..C#のプロパティ:これはなぜ機能しますか?
public class FileManip {
public FileManip(string path) {
appPath = path;
}
private string appPath {
get;
}
//...............
}
プロパティが実装でget
を持っている場合は、あなたが書き込みを許可しない性質を持っている:
public class FileManip {
public FileManip(string path) {
AppPath = path; // <<===== ERROR
}
private string AppPath {
get { return @"c:\temp\"; }
}
}
しかし、あなたがいない実装で{ get; }
を持っている場合、それは読み取り専用のいわゆるますプロパティ。これはC#6で追加されています。コンストラクタからのみ書き込むことができます。コードの他のすべての部分は、このプロパティに読み取り専用としてアクセスします。
ahh参照してください..私はreadonlyとしてマークされた通常の変数はコンストラクタで設定することができます(Constとは違う)が、前にプロパティでこれを見たことがないことを知っていた。 thx – gmes29
あなたがあなた自身のために見てきたように、はい、それは、仕事をし、言うことは何があり
private const string appPath = "something";
は、それ以上プロパティを使用する必要がないため – gmes29
として、それを変更することもできます。何がうまくいくのか、C#はこれが有効であるように定義されました。彼らは彼らの言葉でそれをする。 – Servy
getを持つ人は 'readonly'を行います。それらのプロパティは、コンストラクタで 'set'することができます。 –
"C#の最新バージョンで見逃したことがあるかもしれない" - "Getter-only"プロパティは、[wiki](https://github.com/dotnet/roslyn/wiki/New- C言語の機能23-6): "自動プロパティは設定者なしで宣言できるようになりました"。 – Quantic