我正在尝试模拟 fortran 从 C# 中的文本文件中读取数据的方式。在fortran中你有类似的东西
READ(60,2005,ERR=9880,END=8000) A,B,C,D
2005 FORMAT(I8,A20,2F10.3)
A、B、C、D 会根据格式语句自动设置为正确的类型。
我已经尝试过以下方式:
private static void Example(string[] Data, ref object[] Variables)
{
for (int i = 0; i < Data.Length; i++)
Variables[i] = (typeof(Variables[i]))Data;
}
但甚至无法获得可以编译的代码。
目前我通过传递对象数组中的所有数据来分配变量,就像这样
private static object[] Example(string[] Data)
{
object[] output = new object[Data.Length - 1];
for (int i = 0; i < Data.Length; i++)
{
int dummyInt;
if (int.TryParse(Data[i], out dummyInt))
output[i] = dummyInt;
/// Try to parse other possible data types
}
return output;
}
private static void UseExample()
{
object[] values = Example(new string[] { " 356", "Some text ", " 956.365", "564050.201" });
int A = (int)values[0];
string B = (string)values[1];
double C = (double)values[2];
double D = (double)values[3];
}
这被简化了,但本质上是我正在做的事情:确定数据的类型,转换为该类型并将所有字段作为对象传递出去,然后在我分配给保存数据的变量时再次转换。这需要知道会出现哪些变量,如果有很多数据字段,还需要大量额外的编码。
我正在寻找一种方法,可以传入所有应该设置的变量并将它们设置为正确的值,但为此我需要能够将数据转换为适当变量的类型。
这可以做到吗?如果可能,怎么做?