正在方法标头中创建T的IEnumerable

本文关键字:创建 IEnumerable 方法 | 更新日期: 2023-09-27 18:28:45

我正在尝试这样做:

public static BatchInfo CreateBatch(IEnumerable<IEnumerable<T>> rows)
{

或者:

public static BatchInfo CreateBatch(IEnumerable<IEnumerable<var>> rows)
{

两者都会产生错误。以前,我有这样的:

public static BatchInfo CreateBatch(IEnumerable<IEnumerable<string>> rows)
{

一切都很好;除了,现在,我需要将rows<string>更改为<var>,因为我将有字符串、日期、int等。最初,我以为我只会有字符串。。。

谢谢你的建议。

正在方法标头中创建T的IEnumerable

public static BatchInfo CreateBatch<T>(IEnumerable<IEnumerable<T>> rows)
{

我认为您对IEnumerable<IEnumerable<T>>的想法是正确的,但也需要使方法声明通用。

public static BatchInfo CreateBatch(IEnumerable<IEnumerable<object>> rows)
{

var不是类型。它是用于implicit typing的关键字,仅用于在声明变量时减少冗余。由于它不是一个类型,这意味着您不能将它用作泛型参数。

我想你要找的是objectdynamic(仅限.NET 4+)

public static BatchInfo CreateBatch(IEnumerable<IEnumerable<object>> rows)
public static BatchInfo CreateBatch(IEnumerable<IEnumerable<dynamic>> rows)

这两种方法可能都会做你想做的事,但都很丑陋,可能会给你带来很多问题。我建议可能为每种类型创建不同的方法,但我不完全确定你想做什么

一个通用的方法参数也可能工作

public static BatchInfo CreateBatch<T>(IEnumerable<IEnumerable<T>> rows)