9
votes

C # Pointeurs dans les arguments de la méthode?

Je souhaite modifier directement la valeur d'une variable en dehors d'une méthode de l'intérieur.
Les pointeurs sont la voie, correct?

Comment?


0 commentaires

5 Réponses :


10
votes

Vous pouvez utiliser le mot clé de paramètre de méthode Réf A>:

42


0 commentaires

1
votes

Utiliser ref . Par exemple. FOO (REF INT I) permettra FOO de modifier la valeur de i via la référence à la valeur de l'appelant.


0 commentaires

1
votes

Les pointeurs sont la voie, correct? p>

pas en C # Ils ne sont pas. Utilisez les paramètres Réf: P>

 void Times2(ref int a) { a = a * 2; }

 void Foo()
 {
      int x = 1;
      Times2(ref x);
      // x is now 2 
 }

0 commentaires

18
votes

non. Dans C #, vous pouvez appliquer passer par la sémantique de référence à l'aide du Réf code> ou OUT CODE> MODIFICIERS: FORT>

void Foo( ref string s, ref int x )
{
    s = "Hello World"; // caller sees the change to s
    x = 100;           // caller sees the change to x
}

// or, alternatively...

void Bar( out string s )
{
    s = "Hello World"; 
}


2 commentaires

Je suppose que cela a à voir avec le collecteur des ordures?


Je ne peux pas m'empêcher de penser qu'un type de référence immuable (chaîne) n'est pas le meilleur sujet à démontrer les paramètres ref .



0
votes

Si la valeur est une classe, elle est déjà passée par référence, et rien d'autre n'est requis, à moins que vous ne devez attribuer l'objet à quelque chose, val = autreObject , alors vous devez utiliser les mots-clés Ref ou Out.

S'il s'agit d'une structure (int, flotteur, long, double, etc.), vous devez utiliser Réf (si l'objet peut ou non être modifié) ou non (si l'objet sera modifié). Vous pouvez avoir plus d'un argument dans une méthode marquée par REF ou VAL.


0 commentaires