【问题标题】:Resizing an array from properties从属性调整数组大小
【发布时间】:2020-05-22 21:22:58
【问题描述】:
private T[] Elements { get; set; }

如果我想调整这个数组的大小,那么我的第一个想法就是这样做:

Array.Resize<T>(ref Elements, Capacity*2)

但它说我无法将属性转换为 out 或 ref

所以我这样做了(已编辑):

            T[] tempContainer = new T[Capacity*2];
            Array.Copy(Elements, tempContainer, Capacity);
            Elements = tempContainer

但我不认为这是调整此数组大小的最有效方法。

感谢您分享您的意见

PS:我的目标是使用列表制作一个动态数组

【问题讨论】:

    标签: c# arrays resize


    【解决方案1】:

    你可以尝试这样处理:

    var tempContainer = Elements;
    Array.Resize(ref tempContainer, Capacity*2);
    Elements = tempContainer;
    

    此外,您当前的“复制”版本应该会失败,因为两个数组都不够长(对于 tempContainer 始终以及对于 Elements 以防Capacity*2 > Elements.Length),请参阅docs

    另外,为什么不将Elements 声明为一个字段?

    【讨论】:

    • 感谢您的评论!我仍在学习计算机科学,不幸的是我不知道什么是领域。随意向我展示如何使用“字段”,祝您有美好的一天。
    • @master fields。基本去掉{get; set;}
    猜你喜欢
    • 2012-07-31
    • 2010-09-17
    • 2013-10-24
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多