1

我对以下声明有疑问:

byte[] frameBuffer = new byte[VideoFile.FRAME_SIZE];

我将它声明为我创建的类中的变量。不幸的是,Visual Studio 在它下面放置了一条弯曲的黄线,并声明“FRAME_SIZE”在当前上下文中不存在。波浪形的黄线是困扰我的地方。如果我给它一个完全不存在的名称,它会使用一条弯曲的红线,但由于 FRAME_SIZE 确实存在,我会得到一条黄线。

FRAME_SIZEVideoFile类中声明如下:

public static readonly int FRAME_SIZE = 2621440;

当我引用它时,它在其他情况下有效,但在这种特殊情况下无效。我尝试过其他不会给我可怕的黄色波浪的声明:

第一个实验:

    const int NEW_FRAME_SIZE = 256;
    byte[] frameBuffer2 = new byte[NEW_FRAME_SIZE];        

第二个实验:

    int thisworks = VideoFile.FRAME_SIZE;

我终于把我原来的声明放在类的构造函数中,它起作用了:

byte[] frameBuffer = new byte[VideoFile.FRAME_SIZE]; // placed in constructor

研究这个问题产生了很多结果,但没有一个特别回答我的问题:

当前上下文中不存在名称“controlname”

当前上下文中不存在名称“controlname”

当前上下文中不存在名称 XXXX

我认为这个问题与无法在构造函数之外使用这个特定变量进行初始化有关,但我想得到一个明确的答案以及我可以在哪里进一步研究的参考。

4

1 回答 1

2

您会看到这种行为,因为 FRAME_SIZE 是静态的,只能从静态上下文中访问。构造函数可以访问 FRAME_SIZE,因为构造函数是在创建静态成员变量引用之前执行的。

声明为静态的其他类将能够访问 FRAME_SIZE(只要它们的访问修饰符允许)。

相关问题

MSDN 文章

于 2013-09-05T19:33:48.893 回答