c# - 不同类型的列表?

标签 c# .net arrays list types

我想创建一个将在方法之间传递的数据列表,但是我不能使用结构,因为将包含在该列表中的数据将根据输入而变化。

例如

if (x == 1) {
   a = 1 
   b = true   
   c = 42
   d = "hello"
}

if (x == 2) {
   a = 2
   b = 'g'
   c = "sup"
}

我相信我的选择是:

  1. 创建一个数组或字符串列表,并将数据转换回原来的字符串。这很困惑,可能会导致无法解释的输入错误,但不会那么糟糕,因为它会在运行时检测到。
  2. 为每种可能性创建一个结构 - 这是否是好的做法?
  3. 以某种方式使用泛型。据我所知,虽然泛型是类型安全的但不是类型严格的,它们必须在使用前转换为类型。例如,如果我在这里想要一个项目列表,我需要将它们转换为字符串,就像解决方案 1 一样,这样就没用了。

那么我的问题是,这些选项中哪一个是最好的?或者是否有使用某种我不知道的通用类型的替代选项?每种情况下可能变量的数量可能会发生变化,就像它们的类型一样。我希望能够将单个 List 或 Array 返回给调用方法,以便它可以适本地处理结果。它将知道如何根据 a 的值处理每组数据,因为它将是“ Action 选择”标识符。我也知道每次将它们转换为对象并返回是非常密集的,所以我宁愿避免这种情况。

这可能很简单,但它让我难住了......

最佳答案

由于您事先不知道列表将包含什么,因此使用 ArrayList 看起来是个不错的例子。 .

如果您想使用键返回值,请考虑使用 Hashtable .

关于c# - 不同类型的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1389440/

相关文章:

javascript - 删除 JSON 对象数组的第一个元素

c# - Quartz.net 在 UTC 时间创建每日计划

c# - .Net Core 2.1 是否支持 LINQ 和 Lambda 表达式?

c# - 'method' 没有重载匹配委托(delegate) 'System.EventHandler'

c# - Sprache 解析器和字符转义

c# - get_PropertyName()/set_PropertyName() 与 PropertyName?

arrays - 如何过滤一个数组以对应其他数组

c# - 如何将字符串 "brakemeup"转换为 char[stringlength] 数组?

c# - 我的 System.Numerics 命名空间在哪里?

c# - 使用 .resx 文件在 LocalHost 上工作但不在服务器 MVC 上工作的本地化