gpt4 book ai didi

c# - 迭代参数,调用方法并将结果传递给另一个函数

转载 作者:行者123 更新时间:2023-11-30 21:35:20 25 4
gpt4 key购买 nike

我有一个函数,它使用 params 关键字允许我将多个对象传递给它:

public IEnumerable<MyObject> GetMyObjects(params FilterObject[] filters)
return service.GetObjectsFromDatabase(filters);
}

所以它可以这样调用:

GetMyObjects(filter1, filter2, filter3);

我的问题是,在调用同样使用 params 关键字的第二个函数之前,我需要将传递给该函数的每个对象转换为不同的类型。第二个函数如下所示:

public IEnumerable<MyObject> GetObjectsFromDatabase(params AnotherType[] filters) 
{
_database.GetObjectsFromDatabase(filters);
}

我假设我需要遍历每个参数并调用执行转换的方法,但是我如何存储每个转换后的对象以便能够将它们传递给下一个函数?

我想象它会是这样的:

public IEnumerable<MyObject> GetMyObjects(params FilterObject[] filters)
List<AnotherType> myList = new List<AnotherType>();
foreach (FilterObject f in FilterObjects) {
AnotherType a = f.ConvertToAnotherType();
myList.Add(a);
}
return service.GetMyObjects(myList);
}

但这不起作用,因为第二个函数不接受列表。传递这些对象的正确方法是什么?

最佳答案

A params -array 是数组而不是列表,所以使用:

public IEnumerable<MyObject> GetMyObjects(params FilterObject[] filters)
AnotherType[] atArray = filters.Select(f => f.ConvertToAnotherType()).ToArray();
return service.GetMyObjects( atArray );
}

除了 LINQ,您还可以使用 Array.ConvertAll:

AnotherType[] atArray = Array.ConvertAll(filters, f => f.ConvertToAnotherType());

关于c# - 迭代参数,调用方法并将结果传递给另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49297534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com