如何在循环中使用 Collection
How to use Collection in loop
小疑问,在 Update 方法中我有 int 计数,假设计数 == 4,然后我使用 for 循环来获取 ID、版本和设置。
在这种情况下,Id、版本和设置值仅获取最后一个值,但如何获取所有值
我试过了,但我觉得它不对,而且不起作用,
为 id、version 和 set 创建了一个单独的列表,
例如:_details.imageList.Add(logoHeader.LogoID);
public void Updates(AUnit _aUnit, int Id)
{
ImageDetails _details = new ImageDetails(_aUnit, Id);
int count = (int) _aUnit.ReadBits(8);
for (int i = 0; i < (int) count; i++)
{
_details.ID = (int) _aUnit.ReadBits(8);
_details.Version = (int) _aUnit.ReadBits(8);
_details.set = (int) _aUnit.ReadBits(24);
}
_details.Rset = _aUnit.Buffer.Skip(10).Take(_details.set).ToArray();
//MemoryStream ms = new MemoryStream(_details.PortrateImages.First());
//Image image = Image.FromStream(ms);
//Bitmap bmp = new Bitmap(image);
_details.UpdateTime = DateTime.Now.ToString("h:mm:ss tt");
newData.Add(_details);
}
public class ImageDetails
{
public ImageDetails(AUnit _au, int carouselId)
{
carId = carouselId;
_AUnit = _au;
_updateTime = "";
}
private string _updateTime;
public int ID { get; set; }
public int Version { get; set; }
public int set { get; set; }
public int carId { get; set; }
public byte[] Rset { get; set; }
public AUnit _AUnit { get; set; }
public byte[] bytes { get; set; }
public List<byte[]> dataArray = new List<byte[]>();
public string UpdateTime
{
get { return _updateTime; }
set { _updateTime = value; }
}
public List<byte[]> PImages
{
get
{
List<byte[]> Plogos = new List<byte[]>();
if (carId == 2)
{
Plogos.Add(Rset);
}
return Plogos;
}
}
public List<byte[]> LImages
{
get
{
List<byte[]> Llogos = new List<byte[]>();
if (carId == 1)
{
Llogos.Add(Rset);
}
return Llogos;
}
}
}
您可以将 detail
设为对象 (class) 并列出详细信息。
喜欢,
public class Detail
{
public int Id{get;set;}
public int Version{get;set;}
public int set{get;set;}
}
并列出详细信息,例如
var Details = new List<Detail>();
并且您可以使用 foreach 循环访问它。喜欢,
foreach(var detail in Details){
Console.log(detail.Id)
.....
}
希望这对您有所帮助。
小疑问,在 Update 方法中我有 int 计数,假设计数 == 4,然后我使用 for 循环来获取 ID、版本和设置。 在这种情况下,Id、版本和设置值仅获取最后一个值,但如何获取所有值
我试过了,但我觉得它不对,而且不起作用, 为 id、version 和 set 创建了一个单独的列表, 例如:_details.imageList.Add(logoHeader.LogoID);
public void Updates(AUnit _aUnit, int Id)
{
ImageDetails _details = new ImageDetails(_aUnit, Id);
int count = (int) _aUnit.ReadBits(8);
for (int i = 0; i < (int) count; i++)
{
_details.ID = (int) _aUnit.ReadBits(8);
_details.Version = (int) _aUnit.ReadBits(8);
_details.set = (int) _aUnit.ReadBits(24);
}
_details.Rset = _aUnit.Buffer.Skip(10).Take(_details.set).ToArray();
//MemoryStream ms = new MemoryStream(_details.PortrateImages.First());
//Image image = Image.FromStream(ms);
//Bitmap bmp = new Bitmap(image);
_details.UpdateTime = DateTime.Now.ToString("h:mm:ss tt");
newData.Add(_details);
}
public class ImageDetails
{
public ImageDetails(AUnit _au, int carouselId)
{
carId = carouselId;
_AUnit = _au;
_updateTime = "";
}
private string _updateTime;
public int ID { get; set; }
public int Version { get; set; }
public int set { get; set; }
public int carId { get; set; }
public byte[] Rset { get; set; }
public AUnit _AUnit { get; set; }
public byte[] bytes { get; set; }
public List<byte[]> dataArray = new List<byte[]>();
public string UpdateTime
{
get { return _updateTime; }
set { _updateTime = value; }
}
public List<byte[]> PImages
{
get
{
List<byte[]> Plogos = new List<byte[]>();
if (carId == 2)
{
Plogos.Add(Rset);
}
return Plogos;
}
}
public List<byte[]> LImages
{
get
{
List<byte[]> Llogos = new List<byte[]>();
if (carId == 1)
{
Llogos.Add(Rset);
}
return Llogos;
}
}
}
您可以将 detail
设为对象 (class) 并列出详细信息。
喜欢,
public class Detail
{
public int Id{get;set;}
public int Version{get;set;}
public int set{get;set;}
}
并列出详细信息,例如
var Details = new List<Detail>();
并且您可以使用 foreach 循环访问它。喜欢,
foreach(var detail in Details){
Console.log(detail.Id)
.....
}
希望这对您有所帮助。