2012-03-07 47 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