2015-10-13 4 views
0

Мне нужно получить доступ к переменной, которая была в другой функции. Переменная для доступа и доступа к функциям - это один и тот же класс, SAME PROJECT BUT DIFFERENT FUNCTIONS. Кроме того, без глобальной переменной декларацииДоступ к значению переменной вне ее области

protected void gdDisplay_SelectedIndexChanged(object sender, EventArgs e) 
{ 
     int dbCompany = Convert.ToInt32(gdDisplay.SelectedRow.Cells[2].Text); 
} 
void gvFunction_Update() 
{ 
     //place to access dbcompany variable// 
} 
+1

вы не можете, но если вы объясните, зачем вам это нужно, мы сможем найти способ обойти его. – Domysee

+0

вы не можете получить к ним доступ. Что вы пытаетесь достичь? – Shetty

ответ

0

Вы не можете получить доступ, что, поскольку dbCompany является локальным переменным в gdDisplay_SelectedIndexChanged методы. Вы должны объявить глобальную переменную на уровне класса, а не: -

public partial class Default : System.Web.UI.Page 
{ 
    int dbCompany = 0; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     //Page Load event 
    } 
    protected void gdDisplay_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     dbCompany = Convert.ToInt32(gdDisplay.SelectedRow.Cells[2].Text); 
    } 
    void gvFunction_Update() 
    { 
     int x = dbCompany ; 
    } 
} 
+0

Как насчет изменения сигнатуры функции для void 'void gvFunction_Update (int something)' и передать dbCompany в качестве параметра? –

+0

@GianPaolo - это зависит от требования, если OP хочет вызвать метод из 'gdDisplay_SelectedIndexChanged', тогда это нормально, но OP никогда не упоминал об этом. –

0

Создание частной собственности «DbCompany» в классе, чтобы получить доступ к переменной через свойство

private int DbCompany {get;set;} 

protected void gdDisplay_SelectedIndexChanged(object sender, EventArgs e) 
{ 
     int dbCompany = Convert.ToInt32(gdDisplay.SelectedRow.Cells[2].Text); 
     //This is where the property gets its value 
     DbCompany = dbCompany; 
} 
void gvFunction_Update() 
{ 
    //place to access dbcompany variable// 
    //Get the value from DbCompany; 
    int dbcompany = DbCompany; 
} 

Если вы сделаете недвижимость «public», вы можете даже получить доступ к значению вне класса и «защитить», если хотите получить доступ к нему дочерними классами.

Я считаю, что использование свойств - лучший способ пойти. Надеюсь, это поможет.

Смежные вопросы