在C#中定义混合类型的数组

时间:2016-12-19 19:58:28

标签: javascript c# arrays

我正在整理一个小小的C#项目 - 我正在用JavaScript编写我用JavaScript编写的东西。

我的项目的一部分需要一个包含混合内容的数组。在JavaScript中我只是启动数组:

Log: []

然后使用push:

Log.push(logEntry);

logEntry是:

string, string, string, int, int, int

整体也可能是空的。

这样做的目的是在JSON编码之前存储数据并将其发送到另一台服务器上的Web API。

有人能指出我在C#中做正确的方向,因为我发现的所有答案似乎都只想存储相同类型的数据。

提前致谢,

贝。

2 个答案:

答案 0 :(得分:5)

以下是如何做到这一点

使用List<object>(因为所有内容都是从C#中的对象派生的):

var list = new List<object>();
list.Add(123);
list.Add("Hello World");

同样dynamic可能适合您(以及您的javascript背景)

var list = new List<dynamic>();
list.Add(123);
list.Add(new
{
    Name = "Lorem Ipsum"
});

如果您不想使用dynamic,您真的需要知道自己在做什么。请在开始之前阅读此MSDN article

但你需要吗?

C#是一种强类型且非常可靠的编程语言。它非常灵活,非常适合使用面向对象和功能范例构建应用程序。您想要做的事情可能是javascript可以接受的,但在C#上看起来很糟糕。我的建议是:使用面向对象的编程并尝试为您的问题构建模型。永远不要像你试过的那样混合类型。一个列表用于单个数据类型。您想深入描述您的问题,以便我们建议您提供更好的解决方案吗?

答案 1 :(得分:1)

  1. 您可以尝试使用ArrayList类。
  2. 异构收集对象的另一种方法是使用List<Object>
  3. ArrayList类旨在保存对象集合。对象可以是不同的类型。但是,它并不总能提供最佳性能。

    来自MSDN

      

    ArrayList类旨在保存异构集合   对象。但是,它并不总能提供最佳性能。   相反,我们建议如下:

         

    对于异构的对象集合,请使用List(in   C#)或List(Of Object)(在Visual Basic中)类型。

         

    对于同类的对象集合,请使用List类。