如何在类中声明静态函数?

时间:2012-03-11 15:42:46

标签: c#

我想在下面编写一个方法:

namespace WebUx.Helpers.CSharp
{
    public class getExceptionMessage
    {

        < Method here >

        var exError = e.Message;
                    if ( e.InnerException != null ) {
                        exError += "<br>" + e.InnerException.Message;
                        if (e.InnerException.InnerException != null ) {
                            exError += "<br>" + e.InnerException.InnerException.Message;
                        }
                    }
    }
}

有人可以告诉我应该如何声明类和方法。我对如何最好地宣布我感到困惑,我认为它应该是静态的,但不确定是否有更好的方法。请注意,我希望这个方法可以从我的代码中的许多地方调用。我想我应该返回一个值为exError的字符串。

3 个答案:

答案 0 :(得分:5)

为了避免代码中可以使用的那些“帮助类”,我会写一个扩展方法:

public static class ExceptionExtensions
{
    public static string GetFormattedErrorMessage(this Exception e)
    {
        if (e == null)
        {
            throw new ArgumentNullException("e");
        }

        var exError = e.Message;
        if (e.InnerException != null)
        {
            exError += "<br>" + e.InnerException.Message;
            if (e.InnerException.InnerException != null)
            {
                exError += "<br>" + e.InnerException.InnerException.Message;
            }
        }

        return exError;
    }
}

然后:

try
{
}
catch (Exception ex)
{
    string msg = ex.GetFormattedErrorMessage();
}

我个人并不喜欢所有StringHelperExceptionHelperFormHelper ...类,唯一的目的是提供与特定类型相关的静态方法。扩展方法是为了这个特定目的而制定的。

答案 1 :(得分:4)

您希望创建一个帮助程序/实用程序类,以便在整个代码中使用。我认为你是在正确的轨道上,静态类/方法对这个概念有好处。

静态类和方法声明如下:

public static class MyUtilClass
{
    public static string GetExceptionMsg(Exception ex)
    {
                var exError = e.Message;
                if ( e.InnerException != null ) {
                    exError += "<br>" + e.InnerException.Message;
                    if (e.InnerException.InnerException != null ) {
                        exError += "<br>" + e.InnerException.InnerException.Message;
                    }
                }

        return exError;
    }
}

在您的客户端代码中,您将使用以下类:

try
{
    // do something
}
catch (Exception ex)
{
    var errMsg = MyUtilClass.GetExceptionMsg(ex);
    // display or log errMsg 
}

答案 2 :(得分:1)

public static void YourStaticMethod()
{

}

这就是你在类中声明static方法的方法。似乎您可能不确定它是否需要static。您需要确定这是否应该作为实例化对象的一部分调用的功能。如果是这种情况,那么它不应该是static。否则,如果它是一种实用方法或类似的东西,static可能是所需的路线。

如果您希望整个班级为static,您可以这样做:

public static class getExceptionMessage
{

}

请注意,如果您创建了课程static,那么该课程的每个成员也必须是static