C# error return关键字后面不能跟有对象表达式

C# error return关键字后面不能跟有对象表达式,c#,C#,这场比赛让我头疼!当我将其更改为Console.WriteLine(匹配)时,它会给我预期的返回,但当我尝试使用返回(匹配)时,它会给我一个错误。我只是不知道该在这里做什么改变,所以任何建议都将不胜感激 你好,詹姆斯 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions;

这场比赛让我头疼!当我将其更改为Console.WriteLine(匹配)时,它会给我预期的返回,但当我尝试使用返回(匹配)时,它会给我一个错误。我只是不知道该在这里做什么改变,所以任何建议都将不胜感激

你好,詹姆斯

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

namespace ReadTextFile
{
    class Program
    {
        static void Main(string[] args)

        {

            List<string> fileLines = new List<string>();

            using (var reader = new StreamReader("test.txt"))
            {
                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    fileLines.Add(line);
                    string pattern = @"(\w+)@(\w+).([a-z]+)";
                    Match match = Regex.Match((line), pattern);
                    if (match.Success)
                    {
                        return(match);                        
                    }


                }

            }
使用系统;
使用System.Collections.Generic;
使用System.IO;
使用System.Linq;
使用系统文本;
使用System.Text.RegularExpressions;
使用System.Threading.Tasks;
名称空间ReadTextFile
{
班级计划
{
静态void Main(字符串[]参数)
{
列表文件行=新列表();
使用(var reader=newstreamreader(“test.txt”))
{
弦线;
而((line=reader.ReadLine())!=null)
{
文件行。添加(行);
字符串模式=@“(\w+)@(\w+)([a-z]+)”;
Match=Regex.Match((行),pattern);
如果(匹配成功)
{
返回(匹配);
}
}
}

您使用的是
void
方法(
void Main
)。
void
方法没有返回值,因此只需
return;
本身就可以了


顺便说一句,
return
不是C#中的函数,它是一个语句,因此不需要括号。

您使用的是
void
方法(
void Main
)。
void
方法没有返回值,所以只需
return;
本身就可以了


顺便说一句,
return
不是C#中的函数,它是一个语句,因此不需要括号。

Main
如果要返回其他更改签名的内容,则返回一个
void
。请注意,
Main
的返回值通常称为错误代码,其中非零被视为错误

如果您创建另一个函数并将您的逻辑放入其中,则可以使用return


另一方面,如果您想做的只是在
时离开
匹配;
字符串行之后;
使用
中断;
退出,而不是
返回

返回一个
无效
,如果您想返回其他内容,请更改签名。请注意,
Main
的返回值通常称为错误代码,其中非零被视为错误

如果您创建另一个函数并将您的逻辑放入其中,则可以使用return


另一方面,如果你想做的只是离开
,而
你需要让
匹配;
字符串行之后;
并使用
中断;
退出,而不是
返回

是一个
无效
函数。你要返回给谁?你不能
返回
w我在一个
void
方法中。你想用这个值做什么?看起来你当时想退出while循环,只需使用
break;
语句你想输出匹配的值吗?设置应用程序的退出代码吗?可能重复的
Main
是一个
void
函数。你是谁rning to?你不能在
void
方法中
返回
。你想对该值做什么?看起来你当时想退出while循环,只需使用
break;
语句你想输出匹配的值吗?设置应用程序的退出代码?可能重复感谢响应。我很抱歉我不确定我是否完全理解你想说的话,但我会稍后再试!谢谢你的回复。我不确定我是否完全理解你想说的话,但我会稍后再试!好的,错误消失了。当我使用“匹配”时,返回“匹配”的值将返回,对吗?@JamesW您不能在Main中返回match,因为Main的预期返回值为void,这意味着它预期不会获得返回值,并且当它有返回值时实际上会出错。好的,得到了,没有值,只需返回即可。那么我如何更改(void?)以获得匹配返回的值?如果我将其更改为“string”下一个错误是:CS0161:“Program.Main(string[])”:并非所有代码路径都返回值CS0029:无法隐式将类型“System.Text.RegularExpressions.Match”转换为“string”。应将“Match”的值用作电子邮件ParseRok的输入字符串,错误消失。当我使用“Match”时,返回“Match”的值将返回,对吗?@JamesW您不能在Main中返回match,因为Main的预期返回值为void,这意味着它预期不会获得返回值,并且当它有返回值时实际上会出错。好的,得到了,没有值,只需返回即可。那么我如何更改(void?)以获得匹配返回的值?如果我将其更改为“string”下一个错误是:CS0161:“Program.Main(string[])”:并非所有代码路径都返回值CS0029:无法将类型“System.Text.RegularExpressions.Match”隐式转换为“string”。应将“Match”的值用作电子邮件解析器的输入字符串