静态方法中的变量是否会自动变为静态,因为它们位于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++; } }
类可以是静态的,它可以具有静态成员,包括函数和字段,但不能包含静态范围中的变量。