首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向C#数组添加元素

向C#数组添加元素
EN

Stack Overflow用户
提问于 2012-03-06 01:15:38
回答 10查看 176.3K关注 0票数 10

我想以编程方式向C#中的字符串数组添加或删除一些元素,但仍然保留以前拥有的项,有点像VB函数ReDim Preserve

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2012-03-06 01:27:25

最明显的建议是使用List<string>,您可能已经从其他答案中读到过。在实际的开发场景中,这绝对是最好的方式。

当然,我想让事情更有趣(这是我的一天),所以我会直接回答你的问题。

下面是几个在string[]中添加和删除元素的函数……

代码语言:javascript
运行
复制
string[] Add(string[] array, string newValue){
    int newLength = array.Length + 1;

    string[] result = new string[newLength];

    for(int i = 0; i < array.Length; i++)
        result[i] = array[i];

    result[newLength -1] = newValue;

    return result;
}

string[] RemoveAt(string[] array, int index){
    int newLength = array.Length - 1;

    if(newLength < 1)
    {
        return array;//probably want to do some better logic for removing the last element
    }

    //this would also be a good time to check for "index out of bounds" and throw an exception or handle some other way

    string[] result = new string[newLength];
    int newCounter = 0;
    for(int i = 0; i < array.Length; i++)
    {
        if(i == index)//it is assumed at this point i will match index once only
        {
            continue;
        }
        result[newCounter] = array[i];
        newCounter++;
    }  

    return result;
}
票数 12
EN

Stack Overflow用户

发布于 2012-03-06 01:28:18

如果你真的不想(或者不能)使用泛型集合而不是数组,Array.Resize就是C#版本的redim preserve:

代码语言:javascript
运行
复制
var  oldA = new [] {1,2,3,4};
Array.Resize(ref oldA,10);
foreach(var i in oldA) Console.WriteLine(i); //1 2 3 4 0 0 0 0 0 0
票数 13
EN

Stack Overflow用户

发布于 2012-03-06 01:17:16

不要使用数组-使用一个通用的List,它允许你动态添加项目。

如果不能这样做,可以使用Array.CopyArray.CopyTo将数组复制到更大的数组中。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9570944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档