实例变量放置?

Cer*_*eal 3 c# coding-style

我只是关于实例变量展示位置的一个小问题.

例:

private void example_MouseMove(object sender, MouseEventArgs e){
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

c#中的鼠标移动事件一直在轮询.有时我可能只想在鼠标位置完全移动到另一个像素时才在其中运行代码.所以我会写这个:

private void example_MouseMove(object sender, MouseEventArgs e){
    if (_prevMousePosition == Cursor.Position) return;
    //Do stuff
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:变量"_prevMousePosition"是否按照惯例放在类的顶部,或者它是否直接位于方法的顶部,如下所示:

private Point _prevMousePosition = new Point(0, 0);
private void example_MouseMove(object sender, MouseEventArgs e){
    if (_prevMousePosition == Cursor.Position) return;
    //Do stuff
}
Run Code Online (Sandbox Code Playgroud)

我觉得它应该位于方法的顶部,因为它将被访问的唯一地方是事件,并且该方法之外的唯一目的是保留先前的鼠标位置.

另外,如果没有实例变量可以实现相同功能的另一种方法,我很想知道它.

Ree*_*sey 7

我的问题是:变量"_prevMousePosition"是否按照惯例放在类的顶部,或者它是否直接位于方法的顶部,如下所示:

这纯粹是个人偏好.编译器不在乎放置它的位置.将它置于方法之上是完全有效的C#,并且不会导致任何问题.

C#代码的最标准惯例(包括由StyleCop等工具强制执行的代码)会建议您将字段与所有其他字段一起放在类的顶部.这样做的好处是,您可以轻松浏览您的班级并查看所有本地存储的数据,并确保正确初始化等.