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

标签 c# arrays object array-initialize

我对 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/

相关文章:

c# - 如何在 Silverlight 中设置 FrameworkElement 的 Parent 属性?

c# - 如何使用驱动程序名称在 .NET 中查找串行端口设备?

c# - 将我填充的数组值显示到列表框中并可选择删除它们

Java ArrayList : create a copy of array and use seperate from old, 但不创建新对象

c# - 在 asp.net 中处理页面刷新

c# - 将聚合 COUNT 中的 DISTINCT 转换为 LINQ

c - 在 SDL2 C 中使用 for 循环显示矩形

C - 将 char* 分配给 char 数组

jQuery 将元素传递给 dataTransfer 属性

javascript - 在 JavaScript 中为每个数组分组、求和并生成一个对象