在函数中声明静态const变量

时间:2016-06-08 14:16:18

标签: c#

如果在函数内声明静态变量是一个错误,那么为什么在函数中隐式声明静态const变量而不是c#中的错误

class Hello{
   public void hello(){
       static int h;  //error
   }
}

class Hello{
   public void hello(){
       const int h=33;   //const implicitly static
   }
}

2 个答案:

答案 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);
  }
}