为什么在通过指定类名创建的类中无法访问静态字段

时间:2014-05-24 03:10:59

标签: c# .net oop static

internal class Configuration
{
    public static double CurrentFrameRate = 23.976;
    public static string ListViewLineSeparatorString = "<br />";
    private void test()
    {
        // Not accessible here
        this.CurrentFrameRate = 30;
    }
}

class main
{
    // this would work just fine
   private void Test()
   {
        Configuration.CurrentFrameRate = 23.976;
   }
}

我的问题是为什么静态可以使用实例在其他类中访问,但不能在其创建的一个类中访问?

2 个答案:

答案 0 :(得分:3)

this keyword用于引用类的当前实例,但由于这些字段是静态的,因此它们不与任何实例相关联。尝试删除this

private void test()
{
    CurrentFrameRate = 30;
}

或者通过选择性地指定类名,如下所示:

private void test()
{
    Configuration.CurrentFrameRate = 30;
}

请注意,在这两种情况下,以及您为main类显示的代码中,您实际上从未实际引用Configuration类的任何实例。您引用了类本身的静态字段。

答案 1 :(得分:1)

静态字段属于类型本身,并且始终通过指定类型名称(如

)来引用
Configuration.CurrentFrameRate

但是,类型本身内部的代码有一个快捷方式,您可以省略Configuration.部分,只需将其用作CurrentFrameRate