Возможно ли подобное? Я предполагаю, что нет, но это выглядит хорошо:
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!
}
}
Конечно, я знаю, что этот синтаксис неверен, и это не скомпилируется. Это было гипотетически-будущее-С#, чтобы четко изобразить мою идею. Я прошу прощения за несколько гипотетический вопрос, но он слишком специфичен для Programmers.SE.
В компиляторе может быть реализовано что-то вроде этого, которое будет служить одной цели: разрешите только объектам свойств get
и set
видеть это поле, по существу позволяя этому свойству быть автономным (в качестве автоматически реализованных свойств), позволяя дополнительную логику get/set.