Сделать значение локальной переменной глобальным в С#

Вопрос: У меня есть следующий код. В этом коде я могу получить строковое значение, например, 1,2,3 и т.д. С помощью eventHandling. Как я понимаю, значение сейчас не важно. Что мне теперь нужно, чтобы иметь возможность войдите в это строковое значение вне события page_load, как в функции myfun() как указано ниже. Как это сделать. protected void

Вопрос:

У меня есть следующий код. В этом коде я могу получить строковое значение, например, 1,2,3 и т.д. С помощью eventHandling. Как я понимаю, значение сейчас не важно. Что мне теперь нужно, чтобы иметь возможность войдите в это строковое значение вне события page_load, как в функции myfun() как указано ниже. Как это сделать.

protected void Page_Load(object sender, EventArgs e) { hfm mymaster = (hfm)Page.Master; lcont lc = mymaster.getlcont(); lc.myevent += delegate(string st) { //slbl.Text = st; string str =st; } } protectd void myfun() { //i want to access the string value «st» here. } Лучший ответ:

Вы можете сделать это двумя способами, как я вижу:

1) Pass as param:

protected void Page_Load(object sender, EventArgs e) { hfm mymaster = (hfm)Page.Master; lcont lc = mymaster.getlcont(); lc.myevent += delegate(string st) { //slbl.Text = st; string str =st; myfunc(str); // pass as param } } protectd void myfun(string str) // see signature { //i want to access the string value «st» here. }

2) Сделайте переменную класса:

string classvariable; protected void Page_Load(object sender, EventArgs e) { hfm mymaster = (hfm)Page.Master; lcont lc = mymaster.getlcont(); lc.myevent += delegate(string st) { //slbl.Text = st; string str =st; classvariable = str; // set it here } } protectd void myfun() { //i want to access the string value «st» here. // get it here } Ответ №1

По моему опыту, вы просто объявляете переменную, которую хотите глобально, вне сферы действия функций.

IE: Независимо от того, где они содержатся.

string st; // St is declared outside of their scopes protected void Page_Load(object sender, EventArgs e) {} protectd void myfun() { } Ответ №2

Вы можете сделать это общедоступным:

public – к члену можно добраться из любого места. Это наименее ограничивающая видимость. Перечисления и интерфейсы по умолчанию являются общедоступными

пример

<visibility> <data type> <name> = <value>;

или

public string name = «John Doe»; Ответ №3

Поместите свою глобальную (или класс?) Переменную до Page_Load или сразу после объявления класса.

public partial class Index : System.Web.UI.Page { private string str = «»; protected void Page_Load(object sender, EventArgs e) { hfm mymaster = (hfm)Page.Master; lcont lc = mymaster.getlcont(); lc.myevent += delegate(string st) { //slbl.Text = st; str =st; } } protectd void myfun() { //i want to access the string value «st» here. //value of st has been passed to str already in page_load. string newString = str; } } Ответ №4

Одно изменение может сделать это возможным. declare str как глобальная переменная

public class Form1 { string str = «»;//Globel declaration of variable protected void Page_Load(object sender, EventArgs e) { } }

Оцените статью
Добавить комментарий