Les variables dans les méthodes statiques deviennent-elles automatiquement statiques, car elles se trouvent dans des scopes statiques en c #?

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

Dans l’exemple ci-dessus, j’ai déclaré deux variables. Deviennent-ils statiques parce que la méthode qui les contient est statique?

Bien qu’elles soient disponibles en C, les variables locales statiques ne sont pas sockets en charge en C #.

Si vous voulez un équivalent de variable statique local, vous pouvez créer une variable d’instance sur la classe ou une variable statique. Sinon, déterminez si la méthode elle-même appartient à la classe statique et si elle doit faire partie d’un type différent.

Non. Seule la méthode est statique mais pas les variables.

De MSDN:

C # ne prend pas en charge les variables locales statiques (variables déclarées dans la scope de la méthode).

si vous voulez avoir une variable statique dans un membre statique, faites la déclaration en dehors de la méthode statique,

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

À partir de MSDN

C # ne prend pas en charge les variables locales statiques (variables déclarées dans la scope de la méthode).

Votre opinion est positive, mais dans l’exemple de code ci-dessous, je suis en train de prendre une exception de violation d’access concernant l’utilisation de mémoire protégée. À cause de cela, il n’est peut-être pas compatible avec les variables locales statiques, mais dans la gestion de la mémoire, il peut indiquer la même adresse.

 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 ; } 

Vous ne pouvez pas avoir de variables statiques locales.

C # ne prend pas en charge les variables locales statiques (variables déclarées dans la scope de la méthode).

Non, seule la méthode est statique.

De MSDN :

C # ne prend pas en charge les variables locales statiques (variables déclarées dans la scope de la méthode).

Et ici :

Le modificateur static peut être utilisé avec des classes, des champs, des méthodes, des propriétés, des opérateurs, des événements et des constructeurs, mais il ne peut pas être utilisé avec des indexeurs, des destructeurs ou des types autres que des classes.

Comme vous pouvez le constater, les variables locales ne sont pas mentionnées.

Vous pouvez cependant utiliser un champ statique:

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

Une classe peut être statique et avoir des membres statiques, des fonctions et des champs, mais pas les variables de la scope statique.