为了账号安全,请及时绑定邮箱和手机立即绑定

使用变量名称作为 foreach 迭代变量并设置其值

使用变量名称作为 foreach 迭代变量并设置其值

PHP
白猪掌柜的 2024-01-21 10:18:30
我有四个布尔变量。我已将列表初始化radioBtns为每个变量的名称作为字符串。我想循环遍历列表中的每个字符串并将每个布尔变量(每个变量与强变量具有相同的名称)设置为true.我收到这个错误:无法分配给“Btn”,因为它是“foreach 迭代变量”bool Q1Button1_True, Q2Button1_True, Q3Button1_True, Q4Button1_True;List<string> radioBtns = new List<string>(new string[] { "Q1Button1_True", "Q2Button1_True", "Q3Button1_True", "Q4Button1_True" });foreach (string Btn in radioBtns){   Btn = true;}
查看完整描述

2 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

您应该使用数组而不是四个不同的变量:


bool[] QButton_True = new bool[4];

for (int i = 0 ; i < 4 ; i++) {

    QButton_True[i] = true;

}

您不要将它们称为Q1Button_True, Q2Button_True... ,而是将它们称为QButton_True[0], QButton_True[1]...


查看完整回答
反对 回复 2024-01-21
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

您可以为此使用反射,但对于这种情况,它可能有点过分了。


如果您只是将所有变量设置为 true,您可能只想将它们设置在源上。


bool Q1Button1_True = true;

bool Q2Button1_True = true;

bool Q3Button1_True = true;

bool Q4Button1_True = true;

另外,如果这是一个会增长的东西,让我们对 Q 说,n那么你可能想要一个数组,而不是Q1Button1_True你会拥有Button1_True[1].


我假设您将在应用程序的多个部分中执行此操作,因此拥有一些“动态”设置器可能是明智的选择。在这种情况下,您可以使用反射:


bool Q1Button1_True, Q2Button1_True, Q3Button1_True, Q4Button1_True;


List<string> radioBtns = new List<string>(new string[] { "Q1Button1_True", "Q2Button1_True", "Q3Button1_True", "Q4Button1_True" });


foreach (string Btn in radioBtns)

{

   bool buttonVar = this.GetType().getProperty(Btn).getValue(this, null);

   buttonVar = true;

}

另一种方法是使用类似这样的东西:


bool Q1Button1_True, Q2Button1_True, Q3Button1_True, Q4Button1_True;


List<string> radioBtns = new List<string>(new string[] { "Q1Button1_True", "Q2Button1_True", "Q3Button1_True", "Q4Button1_True" });


foreach (string Btn in radioBtns)

{

   PropertyInfo buttonVar = this.GetType().GetProperty(Btn);

   buttonVar.SetValue(this, true, null);

}


查看完整回答
反对 回复 2024-01-21
  • 2 回答
  • 0 关注
  • 197 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信