C# 声明具有两个泛型参数的方法
正在尝试执行以下操作:C# 声明具有两个泛型参数的方法,c#,C#,正在尝试执行以下操作: public static class Qbo<T> where T : class { public static List<Items> Convert(List<T> list1, List<T> list2) { // Merging lists of different types into one list } } 公共静态类Qbo,其中T:class { 公共静态列表
public static class Qbo<T> where T : class
{
public static List<Items> Convert(List<T> list1, List<T> list2)
{
// Merging lists of different types into one list
}
}
公共静态类Qbo,其中T:class
{
公共静态列表转换(列表列表1、列表列表2)
{
//将不同类型的列表合并到一个列表中
}
}
这样称呼:
var items = Qbo<Bill>.Convert(bills, billPayments);
var moreItems = Qbo<Invoice>.Convert(invoices, payments);
var items=Qbo.Convert(票据、账单和付款);
var moreItems=Qbo.转换(发票、付款);
但是我得到一个错误,因为该方法试图接受第一个列表类型作为第二个列表类型。有什么想法吗?当您希望类型参数有不同的数据类型时,您也应该以不同的方式声明它们:
public static List<Items> Convert<T, U>(List<T> list1, List<U> list2)
公共静态列表转换(列表1、列表2)
您还应该注意,您必须向上述方法声明本身添加类型参数,除非它们尚未通过您所在的类声明。当您希望类型参数具有不同的数据类型时,您也应该以不同的方式声明它们:
public static List<Items> Convert<T, U>(List<T> list1, List<U> list2)
公共静态列表转换(列表1、列表2)
您还应该注意,您必须向上述方法声明本身添加类型参数,除非它们尚未通过您所在的类声明。我假设您的参数属于不同的类型,因此您将使用多个泛型。我认为应该是这样的
public static List<Items> Convert<T, U> (List<T> list1, List<U> list2)
{
}
公共静态列表转换(列表1、列表2)
{
}
下面是关于泛型的文档,它应该涵盖具有多个泛型的方法。
我假设您的参数是不同类型的,因此您将使用多个泛型。我认为应该是这样的
public static List<Items> Convert<T, U> (List<T> list1, List<U> list2)
{
}
公共静态列表转换(列表1、列表2)
{
}
下面是关于泛型的文档,它应该涵盖具有多个泛型的方法。
通过您的编辑,您需要的内容会更加清晰。您已经从类定义中获得了
T
,但是现在需要为该方法创建另一个泛型类型。因此,也要使方法调用通用:
public static class Qbo<T> where T : class
{
public static List<Items> Convert<U>(List<T> list1, List<U> list2)
// ^^^ ^^^
{
// Merging lists of different types into one list
}
}
公共静态类Qbo,其中T:class
{
公共静态列表转换(列表列表1、列表列表2)
// ^^^ ^^^
{
//将不同类型的列表合并到一个列表中
}
}
通过您的编辑,您需要的内容会更加清晰。您已经从类定义中获得了T
,但是现在需要为该方法创建另一个泛型类型。因此,也要使方法调用通用:
public static class Qbo<T> where T : class
{
public static List<Items> Convert<U>(List<T> list1, List<U> list2)
// ^^^ ^^^
{
// Merging lists of different types into one list
}
}
公共静态类Qbo,其中T:class
{
公共静态列表转换(列表列表1、列表列表2)
// ^^^ ^^^
{
//将不同类型的列表合并到一个列表中
}
}
然后声明两个泛型类型:Convert(…)
出现了什么错误?什么是bills
和payments
数据类型?您正在声明这两种列表类型是相同的-T
。现在这个方法甚至不会编译,除非它包含在一个带有type T参数的泛型类中。所以当您获得正确的方法签名时,我很好奇您将在其中做什么,特别是当您似乎知道返回类型时。然后声明两个泛型类型:Convert(…)
您会得到什么错误?什么是bills
和payments
数据类型?您正在声明这两种列表类型是相同的-T
。现在这个方法甚至不会编译,除非它包含在一个带有type T参数的泛型类中。所以当您获得正确的方法签名时,我很好奇您将在其中做什么,特别是你似乎知道返回类型。这几乎与发布的答案相同,甚至我在上面的评论……此外,链接并不像在VB中那样有用,更重要的是,它不处理带有泛型类型参数的方法,而是处理带有类型参数的类。这与发布的答案几乎相同,甚至我在上面的评论……此外,链接并不像在VB中那样有帮助,更重要的是,它不处理带有泛型类型参数的方法,而是处理带有类型参数的类。