这样的事情可能吗?我假设不是,但对我来说看起来不错:
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 来说太具体了。
可以在编译器中实现这样的事情,它有一个目的:只允许属性get
和set
访问器查看字段,本质上允许属性是自包含的(就像自动实现的属性一样),同时允许额外的获取/设置逻辑.