2011-09-06 5 views
1

Possible en double:
Static variables in C#valeur Initialiser dans la fonction qu'une seule fois

Si vous avez une grande fonction et au milieu quelque part vous avez une valeur qui doit être déclarée que la première fois sa rencontre.

En C++, vous pouvez utiliser statique pour cela:

void func() { 
    ... 
    ... 
    static double startPosition = 0.0; 
    int var = startPositino - value; 
    startPosition = var; 
    ... 
} 

Mais C# vous ne pouvez pas avoir des variables statiques dans une fonction, est-il une autre façon de le faire sans le déclarer en dehors de la fonction?

+1

"Si vous avez une grande fonction" C'est votre problème ici. – svick

+0

La question n'est pas de savoir pourquoi C# n'autorise pas les variables statiques à l'intérieur d'une fonction. – Merni

+0

Est-ce que cela fait une différence pour vous si c'est un champ 'private static'? C'est le meilleur que vous pouvez faire en C#. – Jon

Répondre

0
bool changed = true; 



void func() // the large function from the question (it wasn't specified what it does or what is called) 
{ 
    ..... 

    if(changed) 
    { 
     // here you initalize you variable (the static from the c++) 
     changed = false; 
    } 

    ..... 
} 
+0

Votre code ne sera pas compilé. Quel est le type de retour de 'largeFunction()'? Et comment cela se rapporte-t-il à la question? – svick

+0

L'exemple de code réussit à démontrer le concept général de la façon dont cela pourrait être accompli en C# - downvoting car il ne compile pas "out of the box" est assez dur. – MattDavey

+0

Je n'ai pas donwnvote à cause de l'erreur de compilation. Mais parce que la réponse ne répond vraiment à rien. C'est juste un échantillon de code sans aucune explication et ce n'est pas évident de savoir ce que cela a à voir avec la question. – svick

Questions connexes