0

对不起,我想我之前不清楚。我正在尝试按照 ORmapper 在下面所说的那样创建任意变量的列表,然后稍后在 foreach 循环中获取它们的值。

此外,所有变量都是字符串类型,所以我认为可以放在一个列表中。谢谢。

有没有办法将变量存储在列表或数组中,然后再循环遍历它们。

例如:我在一个名为 x、y 和 Z 的类 c 中有三个变量。

我可以做类似的事情:

公共列表 Max_One = 新列表 {cx,cy,cz}


然后在代码中

          foreach (string var in Max_One)
          {                   
              if ((var < 0) | (var > 1 ))
              {
                // some code here
              }
          }
4

5 回答 5

0

是的,例如,如果它们都是strings:

public List<string> Max_One = new List<string> {c.x,c.y,c.z};

这使用集合初始值设定项语法。

string但是,将 a 与 a进行比较是没有意义的int。这是一个有效的例子:

  foreach (string var in Max_One)
  {                   
      if (string.IsNullOrEmpty(var))
      {
        // some code here
      }
  }
于 2012-07-31T13:43:43.983 回答
0

您可以尝试使用:

List<object> list = new List<object>
{
  c.x,
  c.y,
  c.z  
};
于 2012-07-31T13:43:45.827 回答
0

如果您的属性是数字(int例如),您可以这样做:

List<int> Max_One = new List<int> { c.x, c.y, c.Z };

foreach像这样使用你的

foreach(int myNum in Max_One) { ... } //you can't name an iterator 'var', it's a reserved word

int用正确的数字类型(double,decimal等)替换列表声明

于 2012-07-31T13:43:48.913 回答
0

我会以相反的方式回答你的问题

首先,您不能用“var”命名变量,因为它是保留名称。所以你可以为 foreach 做的是

foreach (var x in Max_One)
      {                   
          if ((x< 0) || (x> 1 ))
          {
            // some code here
          }
      }

如果您有 .Net 3.0 及更高版本的框架,您可以使用“var”将 x 定义为 Max_One 列表的成员,而无需担心 x 的实际类型。如果您的版本早于 3.0,那么您需要指定 x 的数据类型,在这种情况下您的代码是有效的(尽管仍有风险)

最后一点(这是你的第一点)

public List Max_One = new List {c.x,c.y,c.z}

您需要了解的主要内容是,为了存储在列表中,成员必须来自相同的数据类型,因此除非 a 、 b 和 c 来自相同的数据类型,否则您不能将它们存储在同一个列表中,除非如果您将列表定义为存储数据类型“对象”的元素。如果您使用“对象”方法,则需要将元素转换为原始类型,例如:

var x = (int) Max_One[0];

您可以从该网站http://www.dotnetperls.com/collections阅读有关列表和其他替代方案的更多信息

Ps 如果这是一个家庭作业,那么你应该阅读更多并从视频教程和书籍中学习更多;)

于 2012-07-31T14:07:16.087 回答
0

您是否有特殊原因要预先存储变量列表?如果在需要时重用这样的列表就足够了,我会选择创建一个返回的属性IEnumerable<string>

public IEnumerable<string> Max_One {
    get {
        yield return c.x;
        yield return c.y;
        yield return c.z;
    }
}

只有在调用属性 getter 时才会检索此枚举中返回的值。因此,生成的可枚举将始终包含和c.x的当前值。c.yc.z

foreach然后,您可以使用您在问题中提到的循环遍历这些值。

如果您需要逐步组合变量列表,这可能不切实际;在这种情况下,您可能必须使用反射。如果确实需要,请告诉我;我可以为此提供一个示例,但它会变得更加冗长和复杂。

于 2012-07-31T14:42:14.997 回答