【问题标题】:C#: How do i assign many variables with an integer(i) in for loop?C#:如何在 for 循环中为许多变量分配一个整数(i)?
【发布时间】:2009-04-22 14:57:54
【问题描述】:

假设我们有 5 个字符串变量,我们想在运行时将“Foo”分配给它们。

不是这个

string a1 = "Foo";
string a2 = "Foo";
string a3 = "Foo";
string a4 = "Foo";
string a5 = "Foo";

我们不能使用这样的东西吗:

for(int i = 0;i < 5;i++)
{
    a+i = "Foo";
}

用类似的方式访问它们是不可能的吗?

【问题讨论】:

  • 我不知道你为什么要这样做。也许这些值的数组或字符串列表会是更好的解决方案?如果适用,甚至可以使用泛型来做你想做的事?你能提供更多关于它是如何使用的信息吗?

标签: c# object integer


【解决方案1】:

正如其他人所说,数组(或另一个集合)是一种更好的方法。

将数组视为变量的集合,您总是通过索引访问这些变量。

我想不出你为什么想要有一组变量,如你的问题中所示。如果您绝对必须这样做,并且它们是实例/静态变量,那么如果您真的想要,您可以使用反射来访问它们 - 但使用数组或其他集合会好得多.

【讨论】:

  • 谢谢乔恩!如果你提供一个例子,我会再次购买你的书。我试图把它们放在 中,但我是泛型的新手 :)
【解决方案2】:
Label[] labels = new Label[] { label1, label2, label3, label4, label5 };

for (int i = 0; i < labels.Length; i++)
{
    labels[i].Text = "Foo";
}

【讨论】:

    【解决方案3】:

    您可以按名称访问控件,但是将标签项数组添加到页面然后使用整数访问数组会更简洁。

    【讨论】:

      【解决方案4】:

      您可以通过迭代标签的父控件:

      for (int i=0; i<= parent.controls.count(); i++)
      {
          if (parent.controls("label" + i)  != null)
          {
               ...
          }
      }
      

      HTH

      编辑:

      在您进行编辑后,我能看到的唯一方法是将它们添加到列表/数组/字典中并对其进行迭代,尽管原理是相同的。

      【讨论】:

      • 我编辑了我的问题,标签只是一个例子。问题是变量。如何使用变量(a1,a2,a3,a4,a5,a6,a7....)来做到这一点?
      【解决方案5】:

      您可以创建一个数组或标签数组列表,并将您的标签放入其中。然后你可以做类似的事情。

      【讨论】:

      • 你能举个例子吗,不是关于标签,而是关于变量(int a1,a2,a3,a4,a5,a6...)?
      【解决方案6】:

      如果所有标签都具有相同的父级,并且该父级没有包含其他标签控件,您可以执行以下操作:

      foreach (Control lbl in ParentControl)
      {
          if (lbl is TextBox)
          {
              ((Label)lbl).Text = "Foo";
          }
      }
      

      【讨论】:

        【解决方案7】:

        假设我们在这里讨论的是网络表单,那么您可以使用 FindControl() 方法。

        private void Button1_Click(object sender, EventArgs MyEventArgs)
        {
          // Find control on page.
          TextBox myControl1 = (TextBox) FindControl("Label1");
          if(myControl1!=null)
          {
             string message = myControl1.Text;
          }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-08-14
          • 2019-09-14
          • 2020-03-05
          • 1970-01-01
          • 2015-07-07
          • 1970-01-01
          相关资源
          最近更新 更多