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,
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;
}
Vous pouvez simplement écrire un bloc constructeur statique comme celui-ci,
static Application(){
attribute=5;
}
Voilà à quoi je pouvais penser.
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;
}
}
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.
-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.