C#如何创建循环将数组元素动态传入单行方法调用参数中
解决方案
完全可以实现动态生成数组,无需手动逐个填写索引元素,根据你的实际场景可以选择以下方案:
- 如果
toBananas本身就是string[]类型,直接传递变量即可,和你手动枚举所有元素的效果完全一致:
var result = await svc.GetBananas(input, "Food", toBananas);
- 如果需要限定最多取前99个元素(不足99个时自动取全部现有元素),可以搭配LINQ的
Take方法实现,需要先引入System.Linq命名空间:
// Take(100)对应取索引0到99的元素,自动适配实际元素数量 var result = await svc.GetBananas(input, "Food", toBananas.Take(100).ToArray());
- 如果
toBananas的元素类型不是string,需要做类型转换,搭配Select方法处理即可:
// 示例为将int类型元素转为字符串,可根据实际类型调整转换逻辑 var result = await svc.GetBananas(input, "Food", toBananas.Select(x => x.ToString()).Take(100).ToArray());
- 如果需要兼容
toBananas为null的场景,避免抛出空引用异常,可以加空值判断:
var result = await svc.GetBananas(input, "Food", toBananas?.Take(100).ToArray() ?? Array.Empty<string>());
上述所有方案生成的数组和你手动逐个写索引生成的数组完全等价,会自动适配toBananas的实际元素数量,不需要提前知道具体元素个数。
内容的提问来源于stack exchange,提问作者CokeVoAYCE
相关产品推荐
相关产品推荐

