このようなことは可能ですか?私はそうではないと思いますが、私には良さそうです:
class MyClass {
public int Foo {
get { return m_foo; }
set {
// Bounds checking, or other things that prevent the use
// of an auto-implemented property
m_foo = value;
}
// Put the backing field actually *in* the scope of the property
// so that the rest of the class cannot access it.
private int m_foo;
}
void Method() {
m_foo = 42; // Can't touch this!
}
}
もちろん、この構文が正しくないことはわかっており、これはコンパイルされません。私の考えを明確に表現するために、仮想的な未来の C# でした。やや仮説的な質問で申し訳ありませんが、Programmers.SE には具体的すぎます。
このようなものは、1 つの目的を果たすコンパイラで実装できます: プロパティget
とset
アクセサーのみがフィールドを参照できるようにし、基本的にプロパティを自己完結型にする (自動実装プロパティのように) 一方で、追加の get/set ロジックを許可します。 .