静态方法中的变量是否会自动变为静态,因为它们位于c#中的静态范围内?

public static void DoSomething() { int a; string b; //..do something } 

在上面的例子中,我声明了两个变量。 它们是否变为静态,因为包含它们的方法是静态的?

虽然在C中可用,但C#中不支持静态局部变量。

如果需要等效的本地静态变量,可以在类或静态变量上创建实例变量。 否则,请考虑方法本身是否属于静态类,以及它是否应该是不同类型的一部分。

不。只有方法是静态的而不是变量。

来自MSDN:

C#不支持静态局部变量(在方法范围内声明的变量)。

如果你想在静态成员中有静态变量,请在静态方法之外进行声明,

 private static int _var = 0; public static void SampleMethod() { _var++; } 

来自MSDN

C#不支持静态局部变量(在方法范围内声明的变量)。

我对您的意见持肯定态度,但在下面的示例代码中,我采取了有关使用受保护内存的访问冲突exception。 因此可能它不支持静态局部变量,但在内存管理中它可以指向相同的地址。

 public static byte[] RawSerialize(object anything) { int rawsize = Marshal.SizeOf(anything); IntPtr buffer = Marshal.AllocHGlobal(rawsize); Marshal.StructureToPtr(anything, buffer, false); byte[] rawdata = new byte[rawsize]; Marshal.Copy(buffer, rawdata, 0, rawsize); Marshal.FreeHGlobal(buffer); return rawdata ; } 

您不能拥有本地静态变量。

C#不支持静态局部变量(在方法范围内声明的变量)。

不,只有方法是静态的。

来自MSDN :

C#不支持静态局部变量(在方法范围内声明的变量)。

在这里 :

static修饰符可以与类,字段,方法,属性,运算符,事件和构造函数一起使用,但它不能与索引器,析构函数或类以外的类型一起使用。

如您所见,未提及局部变量。

但是,您可以使用静态字段:

 public class MyClass { private static int MyVariable = 10; public static void MyMethod() { MyVariable++; } } 

类可以是静态的,它可以具有静态成员,包括函数和字段,但不能包含静态范围中的变量。