“方法必须有一个返回类型”和“返回后不能跟一个对象表达式”

时间:2013-07-23 19:08:33

标签: c# return syntax-error

我将此方法添加到公共静态类

    public static LogMessage(Exception ex)
    {
        Trace.WriteLine(ex.ToString());
        return ex; 
    }

当我这样做时,我收到一条消息,说“方法必须有返回类型”

并且在返回时我还收到一条消息“由于'Util.logMessage(System.Exception)'返回void,返回关键字后面不能跟一个对象表达式”

我该如何纠正?

5 个答案:

答案 0 :(得分:11)

您需要更改声明以返回异常:

public static Exception LogMessage(Exception ex)
{
    Trace.WriteLine(ex.ToString());
    return ex; 
}

请注意,根据使用情况,允许将其作为通用方法可能是有意义的:

public static T LogMessage<T>(T ex) where T : Exception
{
    Trace.WriteLine(ex.ToString());
    return ex; 
}

这将允许您以强类型方式使用生成的异常。

或者,您可能不会返回异常,因为Logging在任何情况下都不需要返回异常:

public static void LogMessage(Exception ex)
{
    Trace.WriteLine(ex.ToString());
}

答案 1 :(得分:2)

您的方法签名没有返回类型。根据代码,我猜你想要:

public static Exception LogMessage(Exception ex)
{
    Trace.WriteLine(ex.ToString());
    return ex;
}

这真的没有意义。记录后没有理由返回异常。你真的可以这样做:

public static void LogMessage(Exception ex)
{
    Trace.WriteLine(ex.ToString());
}

答案 2 :(得分:1)

public static Exception LogMessage(Exception ex)
{
    Trace.WriteLine(ex.ToString());
    return ex; 
}

答案 3 :(得分:1)

如果要返回异常:

 public static Exception LogMessage(Exception ex)

如果无效:

 public static void LogMessage(Exception ex)

答案 4 :(得分:0)

任何返回的方法都必须指定返回类型。

您的情况:

public static Exception LogMessage(Exception ex)
{
    Trace.WriteLine(ex.ToString());
    return ex; 
}

如果你想返回一个字符串:

public static string LogMessage(Exception ex)
{
     return ex.ToString();
}

使用没有返回的方法看到的void修饰符只是声明返回类型为void。在这种情况下,您的返回值将是Exception的类型。方法应始终具有返回类型,无论是void,标准类型(如string还是int),还是类所属的对象,例如{{ 1}}。它还可以返回通用内容,例如MyClassList<T>

在这种情况下,正如其他人所说的那样,返回异常确实没有意义。