.Net:这是什么意思?使用静态方法的非静态类?

时间:2010-02-21 08:11:39

标签: .net class static-methods

这是什么意思? 有一个非静态类,例如有一个静态方法吗?

如果没有创建该类的实例,我们就无法使用它。但它的静态方法呢?

3 个答案:

答案 0 :(得分:2)

可以使用静态方法而无需实例化类。使用的一种常见情况是,类的构造函数是私有的,并且提供静态方法来返回实例,例如工厂。例如Create方法:

XmlReader reader = XmlReader.Create("test.xml");

答案 1 :(得分:2)

是的,您可以在不创建类实例的情况下调用静态方法。

静态方法基本上就是:与类型本身相关联的方法,而不是类型的实例。 (这也适用于结构。)对于静态字段也是如此 - 同样,它们与类型相关联,而不是与该类型的一个特定实例相关联。名称“静态”有点不幸,因为它没有真正描述这个概念 - VB“共享”关键字在某些方式中更好,尽管它暗示它在 all <之间共享/ em>实例,而不是与任何实例关联。 (无论是否已创建 ,任何实例都可以使用静态成员。)

实际上,静态方法通常用作构造函数的替代方法 - 例如Encoding.GetEncoding。这允许它们返回缓存的实例,如果它特别有用则返回null,或者在构造函数代码之前/之后做额外的工作。

答案 2 :(得分:1)

如果你有一个带有静态方法的非静态类,这意味着你可以使用静态方法,即使你没有该类的实例。