2013-05-01 2 views
0

Я хочу использовать выражение Lambda, но получаю сообщение об ошибке, которое встречается в строке, прокомментированной ниже, когда я пытаюсь ее вызвать.Lambda Ошибка выражения при попытке называть его

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(); 

      } 
     } 
    } 
+0

Что говорит об ошибке? –

+0

Эта строка даже не действительна. Я не знаю, что вы пытаетесь сделать. – Justin

ответ

1

Из кода, MyDelegate должен возвращать строку, но Console.WriteLine("test") не возвращает ничего, так что не компилируется:

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

Вы должны либо вернуть что-то после того, как Console.WriteLine или использовать другой тип делегата, без возвращаемого значения.

+0

спасибо за ответ – khoshghadam

Смежные вопросы