2010-09-30 5 views
1

Considérons le code (C#) suivant. Le lambda transmis à ConvolutedRand() est dit "fermé sur" le format de la variable nommée. Quel terme utiliseriez-vous pour décrire comment la variable random est utilisée dans MyMethod()?Quel est le contraire du terme "closed over"?

void MyMethod 
{ 
    int random; 
    string format = "The number {0} inside the lambda scope"; 

    ConvolutedRand(x => 
    { 
     Console.WriteLine(format, x); 
     random = x; 
    }); 

    Console.WriteLine("The number is {0} outside the lambda scope", random); 
} 

void ConvolutedRand(Action<int> action) 
{ 
    int random = new Random.Next(); 
    action(random); 
} 

Répondre

3

J'écoute typiquement "lié" contre "libre", dans le contexte d'une expression particulière ou d'une portée lexicale. Le lambda se referme sur format et random (qui sont 'libres' dans le lambda, c'est pourquoi il se ferme sur eux). Dans MyMethod, les deux variables sont simplement des variables liées localement.

1

Ce serait une variable locale IMO. (Peut-être y at-il un nom plus scientifique, not free peut-être?)

+2

Je peux dire que vous êtes qualifié pour répondre à cette question en fonction de votre icône d'utilisateur. – anthony

Questions connexes