出于 JSON 个原因,如何将元素附加到 C# 数组?
How to append an element to a C# array for JSON reasons?
我仍在开发我的 JSON 解析器和编写器。
使用 Visual Studio Web Essentials,我创建了一个 class 图表,其中包含一些数组,我可以在其中放置信息,例如:
public Channel[] channels { get; set; }
如您所见,这是一个没有预定义大小的数组(动态数组),现在我想向这个数组添加一些东西,但这似乎并不那么简单:this post,称为“ Adding values to a C# Array”提到了如何做到这一点:
- 如果数组大小已知(这不是我的情况),有很多解决方案。
- 使用中间容器(
List
)....抱歉,我想避免来回复制我的数据,这看起来像是一场性能噩梦。
- 使用
Add()
方法。我没有 Add()
方法。
- 使用
Resize()
方法。我没有 Resize()
方法。
- 使用
using System.Linq;
,Append()
等方法可用。抱歉,using
子句存在,但我没有 Append()
方法。
- 做一些
Enumarable...ToArray()
:这看起来也像是来回复制数据,只是看起来像是另一个性能噩梦。
我无法相信 Web Essentials 决定使用动态数组而没有想到一种简单的方法来操作这些数组。有人有想法吗?
特此摘录我的源代码,抛出 IndexOutOfRangeException:
root.<stuff>.channels[root.<stuff>.channels.Length] = new Channel();
我检查了 IsFixedSize
属性:它是 true
并且是只读的。
哦,我正在使用Visual Studio Enterprise 2019,我的.Net目标框架似乎是4.6.1,这似乎是我PC上安装的最高版本。
提前致谢
您无法调整固定大小数组的大小。该数组始终具有固定大小
此处最好的解决方案是使用 List<Channel>
而不是 Channel[]
。
否则,您可以创建一个新数组,其大小为前一个数组的大小加一,并通过最后一个数组索引设置添加值,但我认为这会很脏。
这里是关于数组的 msdn 文档:Array
说的是
Unlike the classes in the System.Collections namespaces, Array has a fixed capacity. To increase the capacity, you must create a new Array object with the required capacity, copy the elements from the old Array object to the new one, and delete the old Array.
我仍在开发我的 JSON 解析器和编写器。
使用 Visual Studio Web Essentials,我创建了一个 class 图表,其中包含一些数组,我可以在其中放置信息,例如:
public Channel[] channels { get; set; }
如您所见,这是一个没有预定义大小的数组(动态数组),现在我想向这个数组添加一些东西,但这似乎并不那么简单:this post,称为“ Adding values to a C# Array”提到了如何做到这一点:
- 如果数组大小已知(这不是我的情况),有很多解决方案。
- 使用中间容器(
List
)....抱歉,我想避免来回复制我的数据,这看起来像是一场性能噩梦。 - 使用
Add()
方法。我没有Add()
方法。 - 使用
Resize()
方法。我没有Resize()
方法。 - 使用
using System.Linq;
,Append()
等方法可用。抱歉,using
子句存在,但我没有Append()
方法。 - 做一些
Enumarable...ToArray()
:这看起来也像是来回复制数据,只是看起来像是另一个性能噩梦。
我无法相信 Web Essentials 决定使用动态数组而没有想到一种简单的方法来操作这些数组。有人有想法吗?
特此摘录我的源代码,抛出 IndexOutOfRangeException:
root.<stuff>.channels[root.<stuff>.channels.Length] = new Channel();
我检查了 IsFixedSize
属性:它是 true
并且是只读的。
哦,我正在使用Visual Studio Enterprise 2019,我的.Net目标框架似乎是4.6.1,这似乎是我PC上安装的最高版本。
提前致谢
您无法调整固定大小数组的大小。该数组始终具有固定大小
此处最好的解决方案是使用 List<Channel>
而不是 Channel[]
。
否则,您可以创建一个新数组,其大小为前一个数组的大小加一,并通过最后一个数组索引设置添加值,但我认为这会很脏。
这里是关于数组的 msdn 文档:Array 说的是
Unlike the classes in the System.Collections namespaces, Array has a fixed capacity. To increase the capacity, you must create a new Array object with the required capacity, copy the elements from the old Array object to the new one, and delete the old Array.