gpt4 book ai didi

c# - 如何在c#中动态设置数组长度

转载 作者:IT王子 更新时间:2023-10-29 04:32:15 27 4
gpt4 key购买 nike

我对 C# 还是个新手,我一直在努力解决数组的各种问题。我有一组元数据对象(名称值对),我想知道如何只创建我真正需要的“InputProperty”对象的数量。在此循环中,我任意将元素数设置为 20,并尝试在条目变为 null 时退出,但接收端的 Web 服务不喜欢传递给它的任何 null 元素:

private Update BuildMetaData(MetaData[] nvPairs)
{
Update update = new Update();
InputProperty[] ip = new InputProperty[20]; // how to make this "dynamic"
int i;
for (i = 0; i < nvPairs.Length; i++)
{
if (nvPairs[i] == null) break;
ip[i] = new InputProperty();
ip[i].Name = "udf:" + nvPairs[i].Name;
ip[i].Val = nvPairs[i].Value;
}
update.Items = ip;
return update;
}

总而言之,假设我在上面的输入数组中只有 3 个名称值对?与其为名为 ip 的数组分配 20 个元素,不如如何编写此代码以使 ip 仅与它需要的一样大。更新对象通过另一个网络服务传递,因此序列化很重要(即我不能使用 namevaluecollection 等)。

附注是通过“添加评论”工具跟进已发布问题的唯一方法吗?

最佳答案

InputProperty[] ip = new InputProperty[nvPairs.Length]; 

或者,您可以使用这样的列表:

List<InputProperty> list = new List<InputProperty>();
InputProperty ip = new (..);
list.Add(ip);
update.items = list.ToArray();

我想指出的另一件事是,在 C# 中,您可以在循环内的 for 循环中使用 delcare int 变量:

for(int i = 0; i<nvPairs.Length;i++
{
.
.
}

只是因为我有心情,这里有一个更简洁的方法来执行此方法 IMO:

private Update BuildMetaData(MetaData[] nvPairs)
{
Update update = new Update();
var ip = new List<InputProperty>();

foreach(var nvPair in nvPairs)
{
if (nvPair == null) break;
var inputProp = new InputProperty
{
Name = "udf:" + nvPair.Name,
Val = nvPair.Value
};
ip.Add(inputProp);
}
update.Items = ip.ToArray();
return update;
}

关于c# - 如何在c#中动态设置数组长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/683073/

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