在c#中一次分配多个变量

时间:2014-10-07 04:03:52

标签: c# arrays parsing

我想在c#中一次分配多个变量。我知道我可以将每个变量分配给数组的索引,但我想知道是否还有另一种选择。我正在处理的示例代码如下:

我使用以下代码查找带变量的行并返回该行:

static public string linqalternative(string textfind1)
{

    var nextLine = File.ReadLines(FILENAME)
        .SkipWhile(line => !line.Contains(textfind1))
        .Skip(1)
        .First();
    string linqalternative = nextLine;
    return linqalternative;
}

然后我在main子例程中调用上面的函数,如下所示:该行有多个值,它存储在一个数组中。然后我希望为新变量分配该数组的值。

// Read Card C4
string stringC4 = linqalternative("C4   ISLTMT ISSSMMT");
string[] C4values = 
       stringC4.Split((string[])null, StringSplitOptions.RemoveEmptyEntries);

int ISLTMT = int.Parse(C4values[0]);
int ISSSMMT = int.Parse(C4values[1]);
int ISLTMTS = int.Parse(C4values[2]);
int ISIA = int.Parse(C4values[3]);
float RPIA = float.Parse(C4values[4]);
float RSQMIA = float.Parse(C4values[5]);
int ITRMIA = int.Parse(C4values[6]);
int ISAVEC = int.Parse(C4values[7]);

我可以将上面显示的所有变量分配到一行或两行中,还是唯一的选择?

2 个答案:

答案 0 :(得分:0)

我没有看到将它变成单行的重点。您可以创建一个类而不是单独的变量,并让该类包含解析逻辑:

public class C4
{
    public int ISLTMT { get; set; }
    public int ISSSMMT { get; set; }
    public int ISLTMTS { get; set; }
    // ...

    public static C4 ParseFromLine(string line)
    {
        string[] values = line.Split((string[])null, StringSplitOptions.RemoveEmptyEntries);

        return new C4
        {
            ISLTMT = int.Parse(C4values[0]),
            ISSSMMT = int.Parse(C4values[1]),
            ISLTMTS = int.Parse(C4values[2]),
            // ...
        };
    }   
}

然后使用此代码将非常简单:

string stringC4 = linqalternative("C4   ISLTMT ISSSMMT");
C4 parsed = C4.ParseFromLine(stringC4);

并访问parsed.ISLTMT等值。

答案 1 :(得分:0)

要回答您的问题,是的,可以使用基本变量声明语法对相同类型的变量执行此操作:

int ISLTMT = int.Parse(C4values[0]), ISSSMMT = int.Parse(C4values[1]); // etc., etc. 
float RPIA = float.Parse(C4values[4]), RSQMIA = float.Parse(C4values[5]);

然而,这不是非常易读,并且不建议使用,尤其是,因为您尝试分配的变量数量为

正如@meda在评论中所说的那样,"不要吝啬线条,它是免费的,更好的清晰度"。