C# de la référence d'une variable à partir d'une autre méthode
Je suis nouveau sur C# et j'ai vraiment besoin de savoir comment appeler/utilisation d'une chaîne à partir d'une autre méthode.
Par exemple:
public void button1_Click(object sender, EventArgs e)
{
string a = "help";
}
public void button2_Click(object sender, EventArgs e)
{
//this is where I need to call the string "a" value from button1_click
string b = "I need ";
string c = b + a;
}
Donc, dans cet exemple, j'ai besoin d'appeler la chaîne "un" définie dans la fonction button1_Click()
à partir de la fonction button2_Click()
Merci!!
OriginalL'auteur Zbone | 2012-02-15
Vous devez vous connecter pour publier un commentaire.
Généralement vous d passer en argument, comme suit:
Cependant, les méthodes dans votre exemple, sont des écouteurs d'événement. Vous n'avez généralement pas les appeler directement. (Je suppose que vous peut, mais je n'ai jamais trouvé un exemple où l'on devrait.) Donc, dans ce cas particulier, il serait plus prudent de stocker la valeur dans un lieu commun au sein de la classe pour les deux méthodes à utiliser. Quelque chose comme ceci:
Noter, cependant, que cela se comportent très différemment dans ASP.NET. Donc, si c'est ce que vous utilisez, alors vous aurez probablement envie de prendre un pas de plus. La raison pour laquelle il se comporte différemment, c'est parce que le côté serveur est "apatride." Donc, chaque clic sur le bouton en provenance du client va vous entraîner dans une toute nouvelle instance de la classe. Donc, en ayant défini qu'au niveau de la classe membre dans le premier event handler n'apparaîtra pas lors de l'utilisation dans le deuxième bouton, cliquez sur gestionnaire d'événement.
Dans ce cas, vous aurez envie de regarder dans la persistance de l'état dans une application web. Les Options incluent:
OriginalL'auteur David
Vous devez déclarer
string a
dans le champ d'application de laclass
, pas la méthode, c'est pour l'instant une "variable locale".Exemple:
Vous pouvez maintenant accéder à la valeur de votre "domaine privé"
a
à partir de n'importe où à l'intérieur de votreclass
qui, dans votre exemple sera uneForm
.OriginalL'auteur DaveShaw
Refactoriser que dans un appel de méthode (ou des biens) de sorte que vous pouvez accéder à la valeur de
a
ailleurs dans votre application:Notez également que vous pouvez être en utilisant implicite déclarations de type. En effet, ce sont les équivalents des déclarations:
OriginalL'auteur Yuck
faire est une classe de niveau variable (variable globale) ou de créer un getter et setter pour une Chaîne, pour n'en nommer que deux options.
OriginalL'auteur northpole
Vous ne pouvez pas le faire.
string a
est un déclaration de variable locale. Il est appelé "local" car il n'est accessible que "localement" pour le bloc dans lequel il se produit.Pour que la variable soit visible pour les deux méthodes, vous pouvez créer un champ dans la classe contenant des méthodes. Si les méthodes sont différentes classes, cependant, la solution devient plus compliqué.
OriginalL'auteur phoog
Vous ne pouvez pas faire cela parce que ces variables sont différentes les étendues (pense qu'il est caché). Le seul moyen d'y parvenir est de déplacer un dans le formulaire principal de la classe:
OriginalL'auteur BlackBear
OriginalL'auteur m-y
Vous pourriez économiser de la variable dans un fichier, puis accédez au fichier, comme ceci:
Si vous le faites, assurez-vous de mettre dans votre code:
using System.IO;
OriginalL'auteur AwesomeHemu