正在方法标头中创建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等。最初,我以为我只会有字符串。。。
谢谢你的建议。
public static BatchInfo CreateBatch<T>(IEnumerable<IEnumerable<T>> rows)
{
我认为您对IEnumerable<IEnumerable<T>>
的想法是正确的,但也需要使方法声明通用。
public static BatchInfo CreateBatch(IEnumerable<IEnumerable<object>> rows)
{
var
不是类型。它是用于implicit typing
的关键字,仅用于在声明变量时减少冗余。由于它不是一个类型,这意味着您不能将它用作泛型参数。
我想你要找的是object
或dynamic
(仅限.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)