C# 各种类型的列表?
Id'希望创建一个从一个方法传递到另一个方法的数据列表,但是我不能使用结构,因为此列表中包含的数据将根据输入而变化 比如说C# 各种类型的列表?,c#,.net,arrays,list,types,C#,.net,Arrays,List,Types,Id'希望创建一个从一个方法传递到另一个方法的数据列表,但是我不能使用结构,因为此列表中包含的数据将根据输入而变化 比如说 if (x == 1) { a = 1 b = true c = 42 d = "hello" } if (x == 2) { a = 2 b = 'g' c = "sup" } 因此,我认为我的选择是: 创建一个数组或字符串列表,并将数据转换回原来的字符串。这是混乱的,可能会导致错误的不可理解的输入,虽然不会那么糟糕,
if (x == 1) {
a = 1
b = true
c = 42
d = "hello"
}
if (x == 2) {
a = 2
b = 'g'
c = "sup"
}
因此,我认为我的选择是:
这可能很简单,但它让我感到困惑…因为您事先不知道列表将包含什么,所以它看起来是使用
如果你想用一个键返回值,考虑使用.。.Net中的一般原则是,每种类型都可以被转换成Stask.Objor(尽管它可能涉及装箱)。您可以使用以下方法
void Foo(params object[] parameters) { ... }
或者使用System.Collections.ArrayList类
“问题”是,当您想要使用这样的值时,您需要如下代码:
if (parameters[i] is string)
{
string s = (string) parameters[i];
...
}
很抱歉,这不是一个与代码相关的答案:在这种构造背后可能隐藏着一个错误的设计。确保你知道你在做什么,否则事情可能会反击 如果确实需要事先不知道所使用字段的类型,则需要一种使用字段类型保存数据的方法,如
struct foo {
private object _value;
private string _type;
foo(string myType, object myValue) {
_value = myValue;
_type = myType;
}
}
然后使用泛型来处理业务逻辑。您可以使用
字典/哈希表来表示数据项,然后将这些字典添加到列表中
如果需要,您还可以将额外的类型信息添加到字典值中。基本上,您需要键入一个列表,然后返回
我的问题是,从结构上讲,您如何知道哪些索引属于哪种类型?这听起来是一个痛苦的解决方案
如果确实需要在列表中存储不同的类型,可以尝试使用包含每种类型的成员的结构,以及指示表示哪种数据类型的标志。然后对该结构使用泛型集合。类似于(从我的头顶上)
然后是通用列表:
var values = new List<FooType>();
var值=新列表();
现在,您可以使用该类型在列表中添加和删除条目,这将指示核心数据到底是什么
我还是不喜欢这个答案;听起来您的设计可能试图做得太多,可能有重构的机会,但由于我看不到您的更多代码或意图,我所能做的就是回答您的问题。:) 为了提供更多的信息,基本上这是试图根据用户的选择解释输入字符串中的各种数据。如果他们说了一件事,我需要检查数据,然后抓取它,列出这些数据及其类型(各种东西都是从这些信息中派生出来的)。问题是我想让它可以扩展,这样我就可以随时添加内容,而不必遵守严格的结构,而且我不必在使用时重铸所有内容。我喜欢ArrayList的建议,也喜欢重构的建议。我会试着修改它。
var values = new List<FooType>();