";方法必须具有返回类型“”;以及“;return后面不能跟有对象表达式“;

本文关键字:return 不能 表达式 对象 以及 方法 返回类型 quot | 更新日期: 2023-09-27 18:24:25

Im正在将此方法添加到公共静态类中

    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

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