繁体   English   中英

“方法必须具有返回类型”,并且“返回不能后跟对象表达式”

[英]“Method must have a return type” and “return must not be followed by an object expression”

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

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

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

并且在返回中,我还收到一条消息,指出“由于'Util.logMessage(System.Exception)'返回void,所以return关键字后不能包含对象表达式”

我该如何纠正?

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

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; 
}

这将允许您以强类型方式使用结果异常。

另外,您不能返回异常,因为在任何情况下日志记录都不需要返回异常:

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

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

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

这真的没有道理。 在记录异常后没有理由返回异常。 您确实可以简单地做到:

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

如果要返回异常:

 public static Exception LogMessage(Exception ex)

如果无效:

 public static void LogMessage(Exception ex)

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

您的情况:

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 ,标准类型(例如stringint )或类属于您的类的对象(例如MyClass 它还可以返回诸如List<T>object的泛型。

但是,正如其他人所述,在这种情况下,返回异常确实没有任何意义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM