gpt4 book ai didi

c# - 将一个数组值复制到另一个数组

转载 作者:行者123 更新时间:2023-11-30 13:22:41 26 4
gpt4 key购买 nike

我有 2 个 object 数组。第一个对象数组具有我想复制到其他数组的属性。

第一个对象数组

HotelRoomResponse[] hr=new HotelRoomResponse[100];

第二个对象数组

RateInfos[] rt = new RateInfos[100];

现在我想做的是像这样复制第一个数组的属性

rt=hr[].RateInfo;

但它给出了错误。这样做的正确方法是什么????

最佳答案

你不能像那样投影一个数组。您实际上必须循环 - 尽管您不需要在自己的代码中手动执行此操作。 LINQ 使它变得非常简单,例如:

RateInfos[] rt = hr.Select(x => x.RateInfo).ToArray();

或者您可以使用 Array.ConvertAll :

RateInfos[] rt = Array.ConvertAll(hr, x => x.RateInfo);

在这两种情况下,某处仍然存在循环 - 它只是不在您的代码中。

如果您是 C# 的新手并且不了解 LINQ、lambda 表达式、委托(delegate)等,那么您可以自己编写代码:

RateInfos[] rt = new RateInfos[hr.Length];
for (int i = 0; i < rt.Length; i++)
{
rt[i] = hr[i].RateInfo;
}

所有这三个都会达到相同的结果。

  • 第一种方法可能是现代 C# 中最惯用的方法。它适用于任何输入类型,您可以从 ToArray() 更改至 ToList()得到 List<RateInfos>而不是数组等。
  • 第二种方法比第一种方法稍微高效,并且可以与 .NET 2.0 一起使用(而 LINQ 是在 .NET 3.5 中引入的)——不过您仍然需要 C# 3 或更高版本的编译器。它只能按照用数组编写的方式工作,但有一个类似的 ConvertAll List<T> 的方法.
  • 第三种方法是最有效的,但显然代码也更多。新手更容易理解,但当您知道前两个解决方案的所有语言功能如何工作时,它并不能清楚地表达您想要实现的目标。

关于c# - 将一个数组值复制到另一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19829777/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com