如果在函数内声明静态变量是一个错误,那么为什么在函数中隐式声明静态const变量而不是c#中的错误
class Hello{
public void hello(){
static int h; //error
}
}
class Hello{
public void hello(){
const int h=33; //const implicitly static
}
}
答案 0 :(得分:3)
我认为你的意思是
void Main()
{
const int c = 1;
Console.WriteLine (c == 1);
}
哪个是合法的,因为它将c
的范围限制为该功能。所有编译器都使用常量local来替换该常量值的所有实例。因此,如果您反编译代码,您将看到:
void Main()
{
Console.WriteLine (1 == 1);
}
C#中没有静态 locals 这样的东西。 C ++中的静态局部变量是局部变量,它们在对该方法的调用中保留其值。在C#中,您将使用静态成员。常量类成员 隐含 static
,因为没有理由将它们设为实例属性。但这并不意味着const
varaibles 是"静态"同样意义上的。
答案 1 :(得分:0)
您可以在static variables
(或任何其他方法)中使用main method
,但您需要在class
中声明它们:
这完全没问题:
public Class YourClass
{
static int anyNumber = 5;
static void main(String[] args)
{
Console.WriteLine(anyNumber);
}
}
这也没关系,但在这种情况下,anyNumber
是局部变量,而不是静态变量。
public Class YourClass
{
static void main(String[] args)
{
int anyNumber = 5;
Console.WriteLine(anyNumber);
}
}