简体   繁体   English

C#中是否有逗号之类的运算符?

[英]Is there a comma like operator in C#?

Specifically I'd like to run the code below. 具体来说,我想运行以下代码。 The problem is unlike C and JS which has a comma operator ( i=(1,2) is 2) C# doesn't. 这个问题与C和JS不同,后者具有逗号运算符( i=(1,2)为2),而C#没有。 AddRange does not return the list it's using so I'm stuck on this lambda. AddRange不会返回它正在使用的列表,因此我被困在该lambda上。 How do I write the lambda without using braces and return statement like the code under it? 如何在不使用花括号和return语句(如其下面的代码)的情况下编写lambda?

var ls1 = new String[]{"one", "three"};
var ls2 = new String[]{"two", "four"};
var ls = (new[] {ls1, ls2}).Aggregate(new List<String>(), (l,r)=> (l.AddRange(r), l));
//var ls = (new[] {ls1, ls2}).Aggregate(new List<String>(), (l,r)=> {l.AddRange(r); return l;});
Console.WriteLine(string.Join(", ", ls));

Will extension method work for you? 扩展方法对您有用吗? It is not like (1,2) operator, but achieves goal of avoiding return in lambda 它不像(1,2)运算符,而是实现了避免lambda返回的目标

public static class Ext
{
    public static List<string> AddRangeAndReturn(this List<string> list, IEnumerable<string> itemsToAdd)
    {
        list.AddRange(itemsToAdd);

        return list;
    }
}

Example of use: 使用示例:

var ls = (new[] {ls1, ls2}).Aggregate(new List<String>(), (l,r)=> l.AddRangeWithReturn(r) );

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM