C# 处理方法中的任何类型
我有两节课C# 处理方法中的任何类型,c#,delegates,types,C#,Delegates,Types,我有两节课 public class Handler { delegate T ReturnDelegate(); public T HandleReturnMethod(ReturnDelegate d) { DoSomething(); //some other stuff return d(); } } public partial class Test { protected int Id {
public class Handler
{
delegate T ReturnDelegate();
public T HandleReturnMethod(ReturnDelegate d)
{
DoSomething(); //some other stuff
return d();
}
}
public partial class Test
{
protected int Id
{
get
{
return new Handler().HandleReturnMethod(delegate()
{
int id = 1;
return id;
});
}
}
}
我希望能够处理处理程序类中的任何类型。但“T”似乎不起作用,int无法转换为它。
如果有更好的方法或此处有错误,请发表评论。您需要创建委托类型和方法以使用泛型。就我个人而言,我会为此使用标准代表:
public T HandleReturnMethod<T>(Func<T> d)
{
DoSomething(); //some other stuff
return d();
}
您需要创建委托类型和方法以使用泛型。就我个人而言,我会为此使用标准代表:
public T HandleReturnMethod<T>(Func<T> d)
{
DoSomething(); //some other stuff
return d();
}
代码无法工作的原因是,int(Int32)是一个结构而不是对象,这是它通常不能为null的原因 除非您将其声明为int?num=null强> 如果我没有弄错的话,只有对象可以有类型(对象和类型都是类),而不是结构。所有类都基于对象类(这就是非泛型(即t类型)元素的集合是对象的原因)
代码无法工作的原因是int(Int32)是一个结构而不是对象,这是它通常不能为null的原因 除非您将其声明为int?num=null; 如果我没有弄错的话,只有对象可以有类型(对象和类型都是类)而不是结构。所有类都基于对象类(这就是不是泛型(即t类型)元素的集合是对象的原因)
命令模式?不确定,但请查看:命令模式?不确定,但请查看: