静态类和静态方法之间有什么区别?

时间:2013-07-23 01:49:04

标签: c#

静态类和静态方法之间有什么区别?我想学习这些差异,何时可以使用其中一种。

例如,我有一个这样的类:

static class ABC
{
    public int a; 
    public void function_a()
    {
        a = 10;
    }
}

和另一个这样的课程:

class DEF
{
    public static int a;
    public static void function_a()
    {
        a= 10;
    }
}

我多次使用过第二种类,我知道它的用法。第一个例子的用法是什么?

1 个答案:

答案 0 :(得分:3)

您的第一个示例将无法编译,静态类必须包含所有静态成员。

仅使用一些静态方法和静态类之间的区别在于,您告诉编译器该类无法实例化。第二个示例是即使没有实例方法,也可以创建DEF类的对象。 ABC类无法使用new运算符进行实例化(将产生编译时错误)。

何时使用静态类

假设您有一个CompanyInfo类,其中包含以下方法以获取有关公司名称和地址的信息。

<强> C#

 class CompanyInfo
{
    public string GetCompanyName() { return "CompanyName"; }
    public string GetCompanyAddress() { return "CompanyAddress"; }
    //...
}

这些方法不需要附加到类的特定实例。因此,您可以将其声明为静态类,而不是创建此类的不必要实例,如下所示:

<强> C#

 static class CompanyInfo
{
    public static string GetCompanyName() { return "CompanyName"; }
    public static string GetCompanyAddress() { return "CompanyAddress"; }
    //...
}

将静态类用作与特定对象无关的方法的组织单位。此外,静态类可以使您的实现更简单,更快,因为您不必创建对象来调用其方法。以有意义的方式组织类中的方法很有用,例如System命名空间中Math类的方法。