C#如何实现单个方法返回N个IEnumerable<bool>类型值的需求
C# 返回指定数量布尔值集合实现方案
现有代码问题说明
- 接口
IBoolS不需要写方法实现,普通接口仅定义方法签名契约即可 Generator类中的ValueToGenerate应为公共属性,你当前写的是私有字段不符合要求
1. 修正后的IBoolS.cs代码
public interface IBoolS { // 仅定义方法签名,接口成员默认public无需额外标注 IEnumerable<bool> GetBools(int N); }
2. 修正后的Generator.cs代码
public class Generator : IBoolS { // 符合要求的公共布尔属性 public bool ValueToGenerate { get; set; } public IEnumerable<bool> GetBools(int N) { // 入参合法性校验 if (N < 0) throw new ArgumentOutOfRangeException(nameof(N), "参数N不能为负数"); // 迭代返回N个指定布尔值 for (int i = 0; i < N; i++) { yield return ValueToGenerate; } // 也可以用系统封装方法替代上述循环,效果完全一致 // return Enumerable.Repeat(ValueToGenerate, N); } }
调用测试示例
// 初始化生成器,指定要生成的布尔值为false var generator = new Generator { ValueToGenerate = false }; // 生成3个false的集合 var result = generator.GetBools(3); // 遍历输出结果 foreach (var item in result) { Console.WriteLine(item); }
内容的提问来源于stack exchange,提问作者Aksi
相关产品推荐
相关产品推荐

