[英]Local Variable C#
如何獲取局部變量?
我有這個代碼
if (ctrl is Control)
{
Control c = (Control)ctrl;
foreach (object innerCtrl in c.Controls)
{
if (innerCtrl is System.Web.UI.WebControls.CheckBox)
if (((CheckBox)innerCtrl).Checked == true)
{
string resultado = (((CheckBox)innerCtrl).Text);
}
else
{
TextBox1.Text = "não";
}
}
}
如何獲得變量resultado ?
這個答案對“我如何獲得變量”(您已經有了變量...)的含義做出了巨大假設。
您可以在所需的任何范圍內聲明變量:
string resultado = null;
if (ctrl is Control)
{
Control c = (Control)ctrl;
foreach (object innerCtrl in c.Controls)
{
if (innerCtrl is System.Web.UI.WebControls.CheckBox)
{
if (((CheckBox)innerCtrl).Checked)
{
resultado = (((CheckBox)innerCtrl).Text);
}
else
{
TextBox1.Text = "não";
}
}
}
}
if (resultado != null) /* use the variable */
將定義更改為可以編譯的內容:
看來您只是在嘗試將變量名加粗 ,並且在它的周圍帶有星號-我很抱歉。
如果要在循環之外獲取它,則可以在上面用c
定義它,如下所示:
Control c = (Control)ctrl;
string resultado = null;
然后像下面這樣使用它:
resultado = (((CheckBox)innerCtrl).Text);
如果您希望變量是global
變量,則在類中對其進行定義。 假設該類是這樣的:
public class YourClass
{
string resultado = null;
}
現在您無需在其他任何地方定義它,只需在方法中使用它即可。
假設您可能會得到多個結果。 我建議使用列表存儲所有結果。 這樣,您可以在函數完成后訪問列表,並使用該列表來訪問所有值。
List<String> results = new List<String>;
if (ctrl is Control)
{
Control c = (Control)ctrl;
foreach (object innerCtrl in c.Controls)
{
if (innerCtrl is System.Web.UI.WebControls.CheckBox)
if (((CheckBox)innerCtrl).Checked == true)
{
string resultado = (((CheckBox)innerCtrl).Text);
if (!String.IsNullOrEmpty(resultado))
results.Add(resultado);
}
else
{
TextBox1.Text = "não";
}
}
}
if (results.Count > 0)
{
// We got results. Do something with our results.
foreach (var result in results)
{
Console.Write(results);
}
}
我建議您將代碼移入它自己的函數中。 通常,我更喜歡讓函數只做一件事情來保持它的簡單性,但是從一開始,您就可以將其變成這樣。
public List<String> FetchTextFromCheckBoxes(Control cntrl)
{
List<String> results = new List<String>();
if (ctrl is Control)
{
Control c = (Control)ctrl;
foreach (object innerCtrl in c.Controls)
{
if (innerCtrl is System.Web.UI.WebControls.CheckBox)
if (((CheckBox)innerCtrl).Checked == true)
{
string resultado = (((CheckBox)innerCtrl).Text);
if (!String.IsNullOrEmpty(resultado))
results.Add(resultado);
}
else
{
TextBox1.Text = "não";
}
}
}
return results;
}
然后,您可以在應用程序的主要部分中像這樣簡單地使用它。
List<String> results = FetchTextFromCheckBoxes(ctrl);
if (results.Count > 0)
{
// We got results. Do something with our results.
foreach (var result in results)
{
Console.Write(results);
}
}
考慮到方法中的局部變量總是由編譯器在作用域的頂部聲明,無論代碼中的實際可見性作用域如何。 因此,將變量移出if
語句不會對性能/內存造成任何影響,如下所示:
foreach (object innerCtrl in c.Controls)
{
if (innerCtrl is System.Web.UI.WebControls.CheckBox) {
string resultado = string.Empty;
if (((CheckBox)innerCtrl).Checked)
{
resultado = (((CheckBox)innerCtrl).Text);
}
else
{
TextBox1.Text = "não";
}
//CAN READ variable here
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.