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
{
}
} 展开
{
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
{
}
} 展开
1个回答
展开全部
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是方法签名,是什么意思
追答
所谓的方法签名就是,函数返回值类型,函数形参类型和个数全部要以声明委托时的相同。即方法签名由:[函数返回值类型]+[函数形参类型和个数]组成。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询