c# func<>表示看不懂,求解

classProgram{staticvoidMain(string[]args){//类似委托功能Func<string,int>test=TsetMothod;Con... class Program
{
static void Main(string[] args)
{
//类似委托功能
Func<string, int> test = TsetMothod;

Console.WriteLine(test("123"));

Func<string, int> test1 = TsetMothod; //-----------问题1: 这不是声明一个委托吗?委托名是test1?TsetMothod是委托的参数?

//只需要调用这个类就可以减少重复的代码
CallMethod<string>(test1,"123");

//或者采用这种
CallMethod<string>(new Func<string, int>(TsetMothod), "123"); //问题二: 这是声明一个委托实例?没有名,只是把TsetMothod作为参数?
CallMethod(new Func<string, int>(TsetMothod), "123");

Console.ReadKey();
}

public static int TsetMothod(string name)
{
if (string.IsNullOrEmpty(name))
{
return 1;
}
return 0;

}

public static void CallMethod<T>(Func<T,int> func,T item)
{
try
{
int i= func(item);
Console.WriteLine(i);
}
catch(Exception e)
{

}
finally
{

}
}
展开
 我来答
仙戈雅3n
推荐于2017-11-27 · TA获得超过5790个赞
知道大有可为答主
回答量:2398
采纳率:75%
帮助的人:894万
展开全部

Func<string, int> test1 = TsetMothod; //-----------问题1:  这不是声明一个委托吗?委托名是test1?TsetMothod是委托的参数?


答:Func是C#3.5以后新增的委托,是系统写好的了,用户只需调用,test1是委托对象,TsetMothod是方法签名。形参是string 返回值是int


            //只需要调用这个类就可以减少重复的代码

            CallMethod<string>(test1,"123");


            //或者采用这种

            CallMethod<string>(new Func<string, int>(TsetMothod), "123");   //问题二: 这是声明一个委托实例?没有名,只是把TsetMothod作为参数?


答:这是委托作为函数参数。。即把委托作为参数传递到给另一个函数的形参。类似于C++里的用指向函数的指针作函数参数

如C++的写法如下:

int Fun(int x,int y,int (*p)(int,int)){
   // Your code in here.
}
追问
TsetMothod是方法签名,是什么意思
追答
所谓的方法签名就是,函数返回值类型,函数形参类型和个数全部要以声明委托时的相同。即方法签名由:[函数返回值类型]+[函数形参类型和个数]组成。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式