如何解决如何在列表中附加值而不更改以前的值
我在C#中上课-
public class Availability
{
public ushort RegionId {get;set;}
}
然后,我有一个方法GetlistofClassesAsPerIterations(Availability xiAvailability)
此方法中有List,我想在其中附加RegionId的不同值。
例如。列表中前100个元素的RegionId = 1500,后100个元素的RegionId = 1400
但是发生的是,当我在RegionId = 1500的列表中添加前100个元素,然后尝试在RegionId = 1400的列表中添加下100个元素时,List中的所有项目都变成了RegionId = 1400。>
我已经为它写了代码-
var lstAvailability = List<Availability>
for (int i = 0; i < 100; i++)
{
xiAvailability.RegionId = 1500;
lstAvailability.Add(xiAvailability);
}
for (int i = 0; i < 100; i++)
{
xiAvailability.RegionId = 1400;
lstAvailability.Add(xiAvailability);
}
在这里,我可以看到RegionId为1400的所有200个元素。 但是相反,我期望前100个是1500,接下来的100是1400。
还有什么选择?
解决方法
这是因为要在列表中放置200个对同一对象的引用。如果要有200个不同的对象,则需要执行以下操作:
var lstAvailability = new List<Availability>();
for (int i = 0; i < 200; i++)
{
var xiAvailability = new Availability();
if (i < 100)
xiAvailability.RegionId = 1400;
else
xiAvailability.RegionId = 1500;
lstAvailability.Add(xiAvailability);
}
如果您需要对2个对象有100个引用,请执行此操作
var lstAvailability = new List<Availability>();
var xiAvailability = new Availability() { RegionId=1400 };
for (int i = 0; i < 200; i++)
{
if (i == 100)
xiAvailability = new Availability() { RegionId = 1500 };
lstAvailability.Add(xiAvailability);
}
,
列表中的对象是对实际对象的引用。因此,您会看到RegionId的最新值为1400。
您可以尝试以下
var xiAvailability1500 = new Availability();
xiAvailability1500.RegionId = 1500;
var xiAvailability1400 = new Availability();
xiAvailability1400.RegionId = 1400;
var lstAvailability = List<Availability>();
for (int i = 0; i < 200; i++)
{
if (i < 100)
lstAvailability.Add(xiAvailability1500);
else
lstAvailability.Add(xiAvailability1400);
}
,
这是另一种替代方法:
<?php
//Enter your code here,enjoy!
$vehicles = [
'AAA1234','BBB2345','CCC5432','notValid33333','notValid212312'
];
$matches=[];
foreach($vehicles as $v){
preg_match('/[A-Z][A-Z][A-Z][\d][\d][\d]/',$v,$matches[]);
}
print_r($matches);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。