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

在C#中,如何调用返回列表的函数?,c#,list,function,methods,C#,List,Function,Methods,在C#中,如何调用返回列表的函数 static void Main(string[] args) { List<string> range = new List<string>(); range.ForEach(item => item.WildcardFiles()); //this is not working } List<string>

在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;  
    }  
static void Main(字符串[]args)
{  
列表范围=新列表();
range.ForEach(item=>item.WildcardFiles());//这不起作用
}  
列出通配符文件(首先是字符串)
{  
List listRange=新列表();
添加(“q”);
列表范围。添加(“s”);
返回列表范围;
}  

您的代码有很多问题:

  • 您正在创建一个空列表,然后对其调用
    ForEach
    。那没什么用
  • 您试图对字符串调用
    通配符文件
    ,而该字符串不是字符串的方法
  • 您试图调用
    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;  
}  
static void Main(字符串[]args)
{  
列表范围=通配符文件();
foreach(范围内的字符串项)
{
//对这个项目做些什么
}
}  
静态列表通配符文件()
{  
List listRange=新列表();
添加(“q”);
列表范围。添加(“s”);
返回列表范围;
}  

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

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

并使您的方法静态工作。

不清楚您要做什么。只调用一个方法是可以的,但是您想对结果做什么呢?您当前正在调用Main中的空列表中的
ForEach
。@Kyle Trauberman为什么要调用实例?正如我写的,我们应该有一个静态的方法,在投票前先测试我说的话,然后告诉我错在哪里。还有比这更多的东西。大概有人想对
WildcardFiles()
返回的列表做些什么。我错过了你的最后一句话。很抱歉我删除了否决票。@David Heffernan,我真的不知道OP想要什么,我只是通过OPs代码处理标题,这可能很疯狂,但首先正如Jon评论的那样,应该清除OP想要什么,然后我们可以重构它。@Saeed Amiri 100%同意你的观点。大卫,大概是你,但这不是问题。在我看来,他想做一件
SelectMany
类型的事情。不过,您的想法看起来也有可能。编译器不接受这一行:List range=WildcardFiles()@CN:应该——我刚刚在我的机器上编译过。但是,对于
System.Collections.Generic
,您需要一个
using
指令。您收到的错误消息是什么?@Jon Skeet-错误消息是:“非静态字段、方法或属性‘MethodReturnList.Program.WildcardFiles()’需要对象引用”。我当前没有指令System.Collection。Generic@JonSkeet:是的,在我将通配符文件更改为静态文件后,它起了作用。非常感谢。