【发布时间】:2009-09-14 15:09:00
【问题描述】:
我可以在 C# 中将数组中的每个值分配给单独的变量吗?这是我想要的 Ruby 代码示例:
irb(main):001:0> str1, str2 = ["hey", "now"]
=> ["hey", "now"]
irb(main):002:0> str1
=> "hey"
irb(main):003:0> str2
=> "now"
我不确定我想要的东西是否可以在 C# 中实现。
编辑: 对于那些建议我将字符串“hey”和“now”分配给变量的人,这不是我想要的。想象一下:
irb(main):004:0> val1, val2 = get_two_values()
=> ["hey", "now"]
irb(main):005:0> val1
=> "hey"
irb(main):006:0> val2
=> "now"
现在get_two_values 方法返回字符串“hey”和“now”的事实是任意的。实际上它可以返回任意两个值,它们甚至不必是字符串。
【问题讨论】:
-
哇,丑陋而令人困惑。提醒我上次约会。
-
@Will:真的吗?我认为它很好而且简洁,同时仍然清晰易读。我比较喜欢python中的特性,经常使用。
-
从 C# 的角度来看,绝对是。看起来您正在将单个数组的引用分配给两个不同的变量......比如 str1 = new string[] {"one","two"}; str2 = str1;所以它立即让 C# 开发人员感到困惑。丑陋的部分只是为了让我能开个玩笑。
-
也许如果 C# 是你唯一的语言,那么是的,我想它看起来有点难看。也许你应该考虑拓宽你的视野?不管怎样,虽然我从来没有用过 ruby 开发,但我已经用 python 做了很多,所以这个任务对我来说一点也不新鲜。它看起来像一个简单的元组创建和解包(也称为元组分配)。尽管 Ruby 显然使用方括号 [] 而不是像 python 那样的 parens (),但它在语法上是相同的。基于@Sarah 的 cmets,我希望它的功能相同。
-
我认为 Will 指的是示例的命令行部分。没有做过 Ruby,我自己做了一个双重考虑。作业本身简洁、清晰、易读。
标签: c# arrays string initialization declaration