【问题标题】:What's the difference between static classes, and static methods?静态类和静态方法有什么区别?
【发布时间】:2013-07-21 22:29:09
【问题描述】:

静态类和静态方法有什么区别?我想了解其中的差异,以及何时可以使用其中一种与另一种。

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

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

第二种类我用过很多次,知道用法。第一个例子有什么用?

【问题讨论】:

  • 您的第一个示例甚至没有编译并且似乎没有做任何有趣的事情,因此描述它的用途似乎是不可能的。这个问题太模糊,无法回答。
  • 静态类中只能有静态成员。您的第一个示例由实例成员组成。
  • GOOGLE IS A GOOD TOOL- Use it sometime stackoverflow.com/questions/2267371/…

标签: c#


【解决方案1】:

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

只使用一些静态方法和静态类的区别在于你告诉编译器这个类不能被实例化。第二个示例可以创建 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 类的方法。

【讨论】:

    猜你喜欢
    • 2012-11-02
    • 2011-07-11
    • 2011-04-23
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 2013-07-26
    相关资源
    最近更新 更多