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

本文关键字:创建 访问 字段 静态 不能 为什么 | 更新日期: 2023-09-27 18:05:08

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;
   }
}

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

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

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

private void test()
{
    CurrentFrameRate = 30;
}

或者可选地指定类名,如:

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

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

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

)来引用。
Configuration.CurrentFrameRate

然而,在类型本身的代码中有一个快捷方式,您可以省略Configuration.部分,只使用CurrentFrameRate