也许我有所遗漏,但 C# 应该为方法提供一个外部访问修饰符,对其他类公开方法,而该方法不能被其自身调用,这不是很有用吗?
比如,对于执行锁定的公共方法,此修饰符可确保锁定不会在类内部重新进入,这不是很方便吗?
也许我有所遗漏,但 C# 应该为方法提供一个外部访问修饰符,对其他类公开方法,而该方法不能被其自身调用,这不是很有用吗?
比如,对于执行锁定的公共方法,此修饰符可确保锁定不会在类内部重新进入,这不是很方便吗?
没有必要这样做。访问控制用于限制来自不受信任客户端代码的成员的访问。
请记住,在面向对象编程中,一个类代表一个自治、自包含的代码单元,并被隐含地认为是自洽的。
如果您不能信任自己类中的代码不会导致重入,那么您还能信任什么呢?使用语言特性来防范每种可能的情况是不切实际的;有时候,作为开发人员,确保自己的代码正常工作只能靠自己 :)
这是我的TypeScript笔。
或许这对任何人来说都有用,可以描述可以通过外部访问修饰符解决的问题。
class ExternalUser {
private static _time: number = 0;
position: {x: number, y: number} = {x: 0, y: 0};
constructor () {
setInterval(this.bind(this.tick), 100);
}
external static set time(val: number) {
ExternalUser._time = val;
}
static get time(): number {
return ExternalUser._time;
}
private tick() {
let someRandomThing = Math.random() > 0.95;
if (someRandomThing) {
ExternalUser.time += 100;// throws error, because set time is external
}
this.position={x: 10 * ExternalUser.time, y: ExternalUser.time * 10};
}
}
extern
关键字,但它不是用于你所描述的。http://msdn.microsoft.com/en-us/library/e59b22c5%28v=vs.80%29.aspx - Nobody