【问题标题】:Passing a generic list to a multi-parameter method in C#将泛型列表传递给 C# 中的多参数方法
【发布时间】:2013-08-28 16:44:31
【问题描述】:

在一个程序中,我需要将三条信息传递给一个方法,该方法又会根据传入的数据为表创建一行。

变量是:

var runningTally = new Dictionary<string, Dictionary<string, int>>();
var comments = query.ToList();
var columns = query.ToList();

我会这样调用方法:

tReport.Rows.Add(row);
foreach (var key in _masterList.Keys)
{
    CreateRow(key, runningTally, columns);
} 

我希望我的方法签名看起来像这样:

private void CreateRow(string key, IDictionary<string, Dictionary<string, int>>
 runningTally, List<T> columns)

但这不起作用(编辑器抱怨找不到类型“T”)。我希望有人能告诉我如何正确使用泛型列表作为方法的参数。感谢您的帮助和建议!

【问题讨论】:

    标签: c# asp.net list generics


    【解决方案1】:

    您需要将该方法标记为泛型。

    像这样:

    private void CreateRow<T>(string key, IDictionary<string, Dictionary<string, int>>
     runningTally, List<T> columns)
    

    注意方法名本身添加了泛型参数。

    【讨论】:

    • 我可以这样做吗,即使其他参数不是通用的?
    • 是的!所做的只是让 C# 编译器知道参数列表中的某处将是一个名为 T 的泛型类型
    • 嘿,成功了!非常感谢!时间一到,我会标记答案。感谢您的帮助!
    • @rossipedia 实际上,根本不需要在参数中使用泛型参数。它可能只是返回类型,甚至都不是。 (虽然最后一个选项不常见,但有时会这样做。)
    猜你喜欢
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    相关资源
    最近更新 更多