如何使以下代码片段工作以及如何传递参数以调用?

时间:2010-11-16 06:41:58

标签: c# .net

使用System;

f.involk()失败,因为它需要一个字符串参数,如何更正代码?

    namespace LamdaTest
    {
        class Program
        {
            static void Test(Func<string,bool> f)
            {
                **f.Invoke();**
            }

            static bool GetItem(string s)
            {
                Console.WriteLine("getItem");
                if (s == "123") return true;
                else return false; 
            }

            static void Main(string[] args)
            {
                Test((string s)=> GetItem("123"));
            }
        }
    }

2 个答案:

答案 0 :(得分:4)

尝试更换:

**f.Invoke();**

使用:

f(null);

但是,如果您不使用string参数,则应改为使用委托类型Func<bool>Action

答案 1 :(得分:1)

试试这个:

class Program
    {
        static void Test(Func<string, bool> f, string s)
        {
            f.Invoke(s);
        }

        static bool GetItem(string s)
        {
            Console.WriteLine("getItem");
            if (s == "123") return true;
            else return false;
        }

        static void Main(string[] args)
        {
            Test(GetItem, "Test String");


        }