0

ラムダ式を使用したいのですが、それを呼び出そうとすると、以下にコメントされている行でエラーが発生します。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace ConsoleAppTestDelegate2
    {
    public delegate string MyDelegate (int a);
    public class ClassRunDelegate
    {
        public void RunDelegate(MyDelegate a, int b)
        {
            Console.WriteLine(a(b));
        }
    }

    public class MyHelp
    {
        public string test(int a)
        {
            a++;
            return a.ToString();
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            MyHelp fhelp = new MyHelp();
            //
            MyDelegate fdelegate = new MyDelegate(fhelp.test);
            ClassRunDelegate cc = new ClassRunDelegate();
            cc.RunDelegate(fdelegate, 10);            
            ///
            cc.RunDelegate((a, b) => { Console.WriteLine("test"); });// get error this line
            Console.ReadLine();

            }
        }
    }
4

1 に答える 1

1

コードから、MyDelegate文字列を返す必要がありますが、Console.WriteLine("test")何も返さないため、コンパイルされません:

  cc.RunDelegate((a) => { Console.WriteLine("test"); }, b);

後で何かを返すか、Console.WriteLine戻り値なしで別のタイプのデリゲートを使用する必要があります。

于 2013-05-01T11:17:54.313 に答える