假设我得到了这样的字符串列表:
List<string> cities = new List<string>();
cities.Add("New York");
cities.Add("Mumbai");
cities.Add("Berlin");
cities.Add("Istanbul");
我也有四个这样的字符串:
string city1
string city2
string city3
string city4
有没有一种好方法以某种方式遍历列表并从列表中为每个var分配一个城市?我正在寻找一种方法来挑选&#34;列表中的值并将其分配给新字符串。
foreach(var city in cities)
{
string city1 = cities[0];,
string city2 = cities[1];
}
也许有人知道更好的方法来完成同样的事情? 谢谢!
我的现实问题是这个,这是我的观点:
<li style="left: 234px; margin: 0px; position: absolute; width: 234px; overflow: hidden;" class=""> <img src="~/Content/img/slide-2.jpg" alt=""> </li>
<li style="left: 468px; margin: 0px; position: absolute; width: 234px; overflow: hidden;" class=""> <img src="~/Content/img/slide-3.jpg" alt=""> </li>
<li style="left: 702px; margin: 0px; position: absolute; width: 234px; overflow: hidden;" class=""> <img src="~/Content/img/slide-4.jpg" alt=""> </li>
<li style="right: 0px; margin: 0px; position: absolute; width: 234px; overflow: hidden;" class=""> <img src="~/Content/img/slide-5.jpg" alt=""> </li>
由于所有的li元素都有不同的样式,因此我不能通过hrefs列表循环使用,我不知道如何在不将我的hrefs分配给单个变量的情况下进行编织...希望我足够清楚......
答案 0 :(得分:1)
如果你必须让他们像单独的字段,没有太多的选择,如果不喜欢通过反射。
示例:
var fields = YOUR_TYPE.GetType().
GetFields(BindingFlags.Instance | BindingFlags.NonPublic).
Where(f=>f.Name.StartsWith("city")).ToList();
之后:
for(var i=0; i<cities.Count; i++) {
fields[i].Set(....) //Set field value
}
答案 1 :(得分:1)
不是真的答案,但是......
正如@Sayse评论的那样,我也不了解拥有这些变量的原因
string city1, city2, city3, city4;
如果您不打算更改cityX
,那么您可以使用 index 来访问原始列表值,而您有意使用变量({{1} },city1 == cities[1]
,city2 == ..2
,你知道吗?)。
如果您的变量将被更改,但只有列表中的其他值,则只需存储索引并更改索引。
否则(如果您打算自由更改值),将它们组织为数组或列表,作为某些内容,也可以使用索引进行操作。然后,您可以使用周期(3 = 3
,for
, linq 等)保存进行初始化。
while
而不是
var city = new string[cities.Count];
for(int i = 0; i < cities.Count; i++)
city[i] = cities[i];
答案 2 :(得分:0)
为什么不按照&#34; Grant Winney&#34;所建议的那样做。最简单的方法,除非你在列表和固定数量的字符串中有固定的条目。
string city1 = cities[0];
string city2 = cities[1];
string city3 = cities[2];
string city4 = cities[3];