web-dev-qa-db-fra.com

Blocs de code statique

Passer de Java à C# J'ai la question suivante: En Java je pourrais faire ce qui suit:

public class Application {
    static int attribute;
    static {
        attribute = 5;
    }
   // ... rest of code
}

Je sais que je peux initialiser cela à partir du constructeur mais cela ne correspond pas à mes besoins (je veux initialiser et appeler certaines fonctions utilitaires sans créer l'objet). Est-ce que C # prend en charge cela? Si oui, comment puis-je faire cela?

Merci d'avance,

61
GETah
public class Application() 
{     

    static int attribute;     
    static Application()
    {         
         attribute = 5;     
    }    // ..... rest of code 
}

Vous pouvez utiliser l'équivalent C # constructeurs statiques . Veuillez ne pas le confondre avec un constructeur classique. Un constructeur standard n'a pas de modificateur static devant lui.

Je suppose que votre //... rest of the code doit également être exécuté une fois. Si vous ne disposez pas d'un tel code, vous pouvez simplement le faire.

 public class Application()
 {     

    static int attribute = 5;
 }
113
parapura rajkumar

Vous pouvez simplement écrire un bloc constructeur statique comme celui-ci,

static Application(){
 attribute=5;
}

Voilà à quoi je pouvais penser.

12
Ajai

Dans votre scénario particulier, vous pouvez effectuer les opérations suivantes:

public class Application { 
    static int attribute = 5;
   // ... rest of code 
}

MISE À JOUR:

Il semble que vous souhaitiez appeler une méthode statique. Vous pouvez le faire comme suit:

public static class Application {
    static int attribute = 5;

    public static int UtilityMethod(int x) {
        return x + attribute;
    }
}
2
Phil Klein

Je trouve autre chose utile. Si votre variable a besoin de plusieurs expressions/instructions pour s'initialiser, utilisez ceci!

static A a = new Func<A>(() => {
   // do it here
   return new A();
})();

Cette approche n'est pas limitée aux classes.

1
ice1000

-Un constructeur statique n'a aucun paramètre.
- Une classe statique ne peut contenir qu'un seul constructeur statique.
- Un constructeur statique s'exécute en premier lorsque nous exécutons le programme.

Exemple:

namespace InterviewPreparation  
{  
    public static class Program  
    {  //static Class
        static Program()  
        { //Static constructor
            Console.WriteLine("This is static consturctor.");  
        }  
        public static void Main()  
        { //static main method
            Console.WriteLine("This is main function.");  
            Console.ReadKey();  
        }  
    }  
}  

Sortie:
Ceci est un constructeur statique.
C'est la fonction principale.

1
vikas Chaturvedi