C#:将全局字段的范围限制为方法/属性或在调用之间保留方法的/属性的局部变量的值

6 c# scope

我经常有定期调用的方法,并且在调用之间必须保留一些"状态",如:

float lastTime = 0.0f;
void Draw( float currentTime )
{
    if( currentTime - lastTime > 0.5f )
    {
        // not enough FPS
    }
    lastTime = currentTime;
}
Run Code Online (Sandbox Code Playgroud)

并且它让我感到疯狂,全局"状态"字段(此处为"lastTime")在整个班级中都是可见的,而在这一方法中只需要它.有没有办法将此全局字段的可见范围限制为仅限于方法或将其设置为本地,但是在调用之间保持它的值?同样的问题适用于属性使用的字段(具有一些逻辑且不能自动).

提前感谢任何建议......

Ree*_*sey 6

在类的一部分中使其成为私有的唯一方法是使其成为一个单独的对象,在类中内部管理此属性.

但是,我建议重新考虑一下.私有它的想法是让一个成员对类本身保密 - 如果你担心你的班级看到自己的数据,那么是时候重构成更小的类,每个类都有自己的功能.

这有一个阶级变得太大的"气味".


Pro*_*mit 0

不,谢谢。C# 不像 C 那样允许函数级静态。我建议给它一个“恶心”的名字,比如 Draw_Data_lastTime 之类的。这至少传达了应该在哪里使用它的信息。