2012-03-07 46 views
2

在Perl可以做一個列表如下C#分配列表的元素的變量

($a, $b, $c) = split(',', "aaa,bbb,ccc"); 

沒有人知道是否有在C#中的等價不是做以下其他?

var elements = "aaa,bbb,ccc".Split(','); 
var a = elements[0]; 
var b = elements[1]; 
var c = elements[2]; 

或者還有其他方法可以更簡潔地完成上述操作嗎?

+0

'分而conquer'是像C#語言中最好的方面之一。 – Bastardo 2012-03-07 16:13:53

+0

你在Perl中做什麼是浪費。您正在執行完全不必要的「拆分」操作,只是爲了消除兩行簡短的代碼,從而在過程中混淆了您的代碼。 – 2012-03-07 16:15:02

+1

,這就是爲什麼Perl經常被描述爲只寫語言:) – Scroog1 2012-03-07 16:20:17

回答

2

不,沒有其他的方法可以在C#中做到這一點。 但有希望在.NET - 即F#:d 有了這個,你可以做

let [| a; b; c |] = "aaa,bbb,ccc".Split(',') 
+0

:不要介意這種代碼將在F#中產生的警告 - 編譯器只是* carefull *:P – Carsten 2012-03-07 16:15:49

3

沒有在C#中的單個賦值表達式中分配多個變量的方法。你確實需要單獨的變量而不是數組嗎?

也許如果您給了我們更廣泛的背景,我們可能會提出更好的方法來解決整體問題 - 通常如果您嘗試以不同語言的方式處理任務,最終會以凌亂的代碼,這可能就是這種情況。

+0

作爲個人評論,我會說這是件好事。它符合C#的一般風格:儘可能簡潔,沒有歧義。單個表達式中的多變量賦值對於減少代碼行非常有趣,但很難拾取別人的代碼並以此方式讀取(IMO)。 – ean5533 2012-03-07 16:15:23

+0

在這種情況下沒有更廣泛的上下文。這只是不時出現的事情,我想我會發現是否有可能。 – Scroog1 2012-03-07 16:17:49

+1

@ Scroog1:但是每個特定的實例都會有自己的上下文,並且可能會以其他方式更好地接近。作爲旁註: – 2012-03-07 16:20:09

相關問題