1

我正在尝试模拟 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];
    }

这被简化了,但本质上是我正在做的事情:确定数据的类型,转换为该类型并将所有字段作为对象传递出去,然后在我分配给保存数据的变量时再次转换。这需要知道会出现哪些变量,如果有很多数据字段,还需要大量额外的编码。

我正在寻找一种方法,可以传入所有应该设置的变量并将它们设置为正确的值,但为此我需要能够将数据转换为适当变量的类型。

这可以做到吗?如果可能,怎么做?

4

0 回答 0