Generics 使用泛型参数创建方法
我试图在静态类中创建一个泛型方法,如下所示 我将在运行时向其传递paramDataGenerics 使用泛型参数创建方法,generics,c#-4.0,generic-programming,Generics,C# 4.0,Generic Programming,我试图在静态类中创建一个泛型方法,如下所示 我将在运行时向其传递paramData public static void InsertBulk<T>(string procedure, IDictionary<T,T> paramData) { //Body } publicstaticvoidinsertbulk(字符串过程,IDictionary参数数据) { //身体 } 这是有效的,但只要我删除下面的方法名,它就会开始显示
public static void InsertBulk<T>(string procedure, IDictionary<T,T> paramData)
{
//Body
}
publicstaticvoidinsertbulk(字符串过程,IDictionary参数数据)
{
//身体
}
这是有效的,但只要我删除下面的方法名,它就会开始显示
类型错误。为什么会这样呢
public static void InsertBulk(string procedure, IDictionary<T,T> paramData)
{
}
IDictionary<int,string> myparams= new IDictionary<int,string>();
publicstaticvoidinsertbulk(字符串过程,IDictionary参数数据)
{
}
IDictionary myparams=新的IDictionary();
据我所知,我可以使用classname.InsertBulk(“MyProc”,myparams)调用这个方法代码>
那么,为什么它要在方法名之后输入呢。它的用途是什么。这里有两件事需要理解:
- 如何声明泛型方法
- 如何调用泛型方法
您需要在方法声明中包含
,使其成为通用方法。没有它,编译器就不知道什么是t
。。。它希望它是常规类型的名称
现在,当调用泛型方法时,可以指定如下类型参数:
InsertBulk<int>("MyProc", myParams);
在这一点上,您可以调用InsertBulk(“MyProc”,myParams)
,编译器将推断int
和string
的类型参数,这里有两件事需要理解:
- 如何声明泛型方法
- 如何调用泛型方法
您需要在方法声明中包含
,使其成为通用方法。没有它,编译器就不知道什么是t
。。。它希望它是常规类型的名称
现在,当调用泛型方法时,可以指定如下类型参数:
InsertBulk<int>("MyProc", myParams);
您可以调用InsertBulk(“MyProc”,myParams)
,编译器将推断int
和string
的类型参数。不,您不能使用myParams
,因为该方法接受IDictionary
,所以键和值必须是相同的类型int
和string
属于不同的类型新字典
就可以了。不,您不能使用myparams
,因为该方法接受IDictionary
,所以键和值必须是同一类型的int
和string
属于不同的类型<代码>新字典
就可以了。如果不能编译,那怎么办?@甜心:我不知道你的意思。您可以使它成为具有两个类型参数的通用方法,也许。。。但实际上,关于你想要实现的目标,我们只有非常非常少的信息。你能给我举个例子吗?@Sweetie:我在回答的底部给出了一个例子,但是,当你问问题时,请尽量更具体地说明你想要达到的目标。如果无法编译,那么解决方案是什么呢?@甜心:我不知道你的意思。您可以使它成为具有两个类型参数的通用方法,也许。。。但实际上,关于你想要达到的目标,我们只有非常非常少的信息。你能给我举个例子吗?@甜心:我在回答的底部给出了一个例子,但当你问问题时,请尽量更具体地说明你想要达到的目标。