C# 如何推广一种通用方法来解析文本,并为不同数量的变量分配一个变量列表?
我需要读取一个以制表符(或逗号)分隔的文本,并将它们分配给一个内置变量列表(int、char、string等,但不是object)。我想用一个通用的方法来处理这个问题。下面是我在三个变量的情况下使用的工作代码C# 如何推广一种通用方法来解析文本,并为不同数量的变量分配一个变量列表?,c#,.net,generic-programming,C#,.net,Generic Programming,我需要读取一个以制表符(或逗号)分隔的文本,并将它们分配给一个内置变量列表(int、char、string等,但不是object)。我想用一个通用的方法来处理这个问题。下面是我在三个变量的情况下使用的工作代码 public static void ReadVariablesFromString<T0, T1, T2>(out T0 input0, out T1 input1, out T2 input2, string stringIn, char[] separators) {
public static void ReadVariablesFromString<T0, T1, T2>(out T0 input0, out T1 input1, out T2 input2, string stringIn, char[] separators)
{
string[] stringParts = stringIn.Split(separators);
input0 = ConvertTo<T0>(stringParts[0]);
input1 = ConvertTo<T1>(stringParts[1]);
input2 = ConvertTo<T2>(stringParts[2]);
}
public static T ConvertTo<T>(object value)
{
return (T)Convert.ChangeType(value, typeof(T));
}
有没有办法将这个模型推广到不同数量的变量?是否有可能编写一个通用方法,为这种特定情况接受不同数量的变量
另一种解决方案可能是为不同类型的变量列表编写此方法。有没有办法在列表中传递变量,而不是逐个传递 不,在C#中,不能发送变量引用数组
但是您可以创建一个具有一些属性的类,然后使用反射来填充它们
看到和
还有一些细节。我建议您返回一份清单
List variables=ReadVariablesFromString(str,分隔符)代码>
例如,列表中的每个条目都是您从输入字符串中解析的值
变量。元素(0)将是“a”
由于列表的类型是“object”,您可以在其中存储任何数据类型,因为每个类型最终都继承自object
。但是,当需要使用数据时,您需要强制转换数据
char字母=(char)变量。ElementAt(0)
但您肯定已经在做类似的事情了,否则您怎么知道在每个传入的out
参数中放入哪个变量呢
这样做意味着您可以从ReadVariablesFromString()
string str = "a\t123\tbcd";
char var1;
int var2;
string var3;
char[] separators = { '\t' };
ReadVariablesFromString(out var1, out var2, out var3, str, separators);