2014-10-07 26 views
1

我想在C#中一次賦值多個變量。我知道我可以將每個變量分配給一個數組的索引,但是想知道是否有另一個選擇。我工作的示例代碼如下:在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; 
} 

然後我打電話上述功能在主子程序如下所示:該行有多個值,它存儲在一個數組中。然後我想要給這個數組的值分配新的變量。

// 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]); 

我可以在一行或兩行中分配上面顯示的所有變量還是唯一的選擇?

+0

我不認爲你可以將它分配在一行或兩行中。 – 2014-10-07 04:24:54

+6

不要吝嗇線條,它的自由和更好的清晰度;) – meda 2014-10-07 04:32:42

+0

只是想知道是否有任何其他選擇。長線不是問題。 – 2014-10-07 04:40:50

回答

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值。

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在評論中所說:「不要吝嗇行,它的自由和更好的清晰度」。