从列表中获取值并分配给新属性

本文关键字:新属性 属性 分配 列表 获取 | 更新日期: 2023-09-27 18:12:01

假设我有一个字符串列表,如下所示:

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

是否有一种好方法可以通过某种方式循环列表并从列表中分配每个变量一个城市?我正在寻找一种方法来"挑选"的值从一个列表,并将其分配给一个新的字符串。

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-element都有不同的样式,我不能像以前那样循环使用href列表,我不明白如何解决它,而不将我的href分配给单个变量…

从列表中获取值并分配给新属性

如果你必须让他们像单独的字段,没有太多的选择,如果不喜欢通过反射。

的例子:

 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
 }

不是真正的答案,但是…

正如@Sayse评论的那样,我也不明白为什么要有这些变量

string city1, city2, city3, city4;

如果您不打算更改cityX,那么您可以通过在您打算使用变量(city1 == cities[1], city2 == ..2, 3 = 3,您看到了吗?)的地方使用索引访问原始列表值。

如果您的变量将被更改,但只是从列表中获得的另一个值,那么只需存储索引并更改索引。

否则(如果您计划自由地更改值),将它们组织为数组或列表,以便与索引一起操作。然后,您可以在初始化时保存,通过使用cycle (for, whilelinq等):

var city = new string[cities.Count];
for(int i = 0; i < cities.Count; i++)
    city[i] = cities[i];
不是

string city1 = cities[0];
string city2 = cities[2];
...
string city112312315654654 = cities[112312315654654];

为什么不像"Grant Winney"建议的那样做呢?这是最简单的方法,除非你在列表中有固定的条目和固定数量的字符串。

string city1 = cities[0];
string city2 = cities[1];
string city3 = cities[2];
string city4 = cities[3];