Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Generics 使用泛型参数创建方法_Generics_C# 4.0_Generic Programming - Fatal编程技术网

Generics 使用泛型参数创建方法

Generics 使用泛型参数创建方法,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参数数据) { //身体 } 这是有效的,但只要我删除下面的方法名,它就会开始显示

我试图在静态类中创建一个泛型方法,如下所示 我将在运行时向其传递paramData

 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:我在回答的底部给出了一个例子,但是,当你问问题时,请尽量更具体地说明你想要达到的目标。如果无法编译,那么解决方案是什么呢?@甜心:我不知道你的意思。您可以使它成为具有两个类型参数的通用方法,也许。。。但实际上,关于你想要达到的目标,我们只有非常非常少的信息。你能给我举个例子吗?@甜心:我在回答的底部给出了一个例子,但当你问问题时,请尽量更具体地说明你想要达到的目标。