当前位置: 代码迷 >> C# >> 关于Func委托的有关问题
  详细解决方案

关于Func委托的有关问题

热度:74   发布时间:2016-05-05 05:13:14.0
关于Func委托的问题
static void Main(string[] args)
        {
            Random rand = new Random();//创建一个随机数生成器
            Console.WriteLine("请输入一个整数:");
            try
            {
                int intCount = Convert.ToInt32(Console.ReadLine());//输入要生成随机数的组数
                IEnumerable<int> randomSeq = Enumerable.Repeat<int>(1, intCount).Select((i)=>rand.Next(100));
                Console.WriteLine("将产生" + intCount.ToString() + "个随机数:");
                foreach (int item in randomSeq)//通过枚举序列来生成随机数,
                {
                    Console.WriteLine(item.ToString());//输出若干组随机数
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.Read();
        }

Func委托不是不需要参数的吗?为什么上面那个Select方法的参数中的Lambda表达式必须要加个参数i呢?
------解决思路----------------------
这里它需要的不是Func<TResult>类型,而是Func<int, TResult>类型的,要不然那个int无法传递给你指定的方法,虽然你不需要,但是它不能不传递。这种确实不需要的时候也可以用下划线替代i,写成 .Select(_ => rand.Next(100)),应该看起来更容易理解。
  相关解决方案