【问题标题】:In C#, How do I call a function that is returning a list?在 C# 中,如何调用返回列表的函数?
【发布时间】:2023-03-21 07:46:01
【问题描述】:

在 C# 中,如何调用返回列表的函数?

    static void Main(string[] args)  
    {  
        List<string> range = new List<string>();  
        range.ForEach(item => item.WildcardFiles());  //this is not working             
    }  

    List<string> WildcardFiles(string first)  
    {  
        List<string> listRange = new List<string>();  
        listRange.Add("q");  
        listRange.Add("s");  

        return listRange;  
    }  

【问题讨论】:

  • 不清楚您要做什么。只需调用一个方法就可以了,但是您要对结果做什么?您当前在 Main 的一个空列表中调用 ForEach...

标签: c# list function methods


【解决方案1】:

你的代码有很多问题:

  • 您正在创建一个空列表,然后对其调用ForEach。这不会有任何作用。
  • 您尝试在字符串上调用 WildcardFiles,但它不是字符串的方法。
  • 您正在尝试调用 WildcardFiles,无论您声明的类型是什么,它都是一个实例方法,但没有该类型的任何实例。
  • 您正在尝试调用 WildcardFiles 而不传递 first 参数的参数
  • 您忽略了对WildcardFiles 的调用的返回值
  • WildcardFiles 忽略它的参数

现在我怀疑你真的想要这样的东西:

static void Main(string[] args)  
{  
    List<string> range = WildcardFiles();
    foreach (string item in range)
    {
        // Do something with item
    }
}  

static List<string> WildcardFiles()
{  
    List<string> listRange = new List<string>();  
    listRange.Add("q");  
    listRange.Add("s");  

    return listRange;  
}  

【讨论】:

  • 在我看来他想做SelectMany 类型的事情。不过,您的想法看起来也很有可能。
  • 编译器不接受这一行:List range = WildcardFiles();
  • @CN:应该——我刚刚在我的机器上编译了它。不过,您需要为System.Collections.Generic 提供using 指令。您收到什么错误消息?
  • @Jon Skeet - 错误消息是:“非静态字段、方法或属性 'MethodReturnList.Program.WildcardFiles()' 需要对象引用”我目前确实有该指令System.Collection.Generic
  • @Jon Skeet:是的,在我将 WildcardFiles 更改为静态之后,它起作用了。谢谢!
【解决方案2】:

我不知道你到底想要什么,但目前你应该做什么:

range.ForEach(item => WildcardFiles(item));

并使您的方法静态工作。

【讨论】:

  • @Kyle Trauberman 为什么是实例?正如我所写的那样,我们应该有一个静态方法,然后再投票测试我所说的话,然后告诉我出了什么问题。
  • 还有更多内容。大概有人想对WildcardFiles()返回的列表做点什么。
  • 我错过了你的最后一句话。对不起。我删除了反对票。
  • @David Heffernan,我真的不知道 OP 想要什么,我只是通过 OP 代码来处理标题,这可能很疯狂,但首先正如 Jon 评论的那样,应该清除 OP 想要什么我们可以重构它。
  • @Saeed Amiri 100% 同意你的观点。大卫,大概是你,但这不是问题所在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-11
  • 1970-01-01
  • 1970-01-01
  • 2017-01-02
  • 1970-01-01
  • 2013-07-28
相关资源
最近更新 更多