Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.Net:这是什么意思?有一个带有静态方法的非静态类?_.net_Class_Static Methods - Fatal编程技术网

.Net:这是什么意思?有一个带有静态方法的非静态类?

.Net:这是什么意思?有一个带有静态方法的非静态类?,.net,class,static-methods,.net,Class,Static Methods,这是什么意思? 有一个非静态类,例如有一个静态方法 如果不创建该类的实例,我们就不能使用它。但是它的静态方法呢?如果您有一个带有静态方法的非静态类,这意味着您可以使用静态方法,即使您没有该类的实例 如果您有一个带有静态方法的非静态类,这意味着您可以使用静态方法,即使您没有该类的实例 可以使用静态方法,而无需实例化类。使用这种方法的一种常见情况是,类的构造函数是私有的,并且提供了一个静态方法来返回实例,如工厂。例如,方法: 静态方法可以在不需要实例化类的情况下使用。使用这种方法的一种常见情况是,类

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


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

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

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

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


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


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

静态方法基本上就是:与类型本身关联的方法,而不是与类型的实例关联的方法。(这也适用于结构。)静态字段也是如此——同样,它们与类型关联,而不是与类型的一个特定实例关联。“static”这个名字有点不幸,因为它没有很好地描述这个概念——VB“Shared”关键字在某些方面更好,尽管它意味着它在所有实例之间共享,而不是与任何实例都没有关联。(无论是否创建过任何实例,静态成员都可用。)


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

是的,您可以调用静态方法,而无需创建类的实例

静态方法基本上就是:与类型本身关联的方法,而不是与类型的实例关联的方法。(这也适用于结构。)静态字段也是如此——同样,它们与类型关联,而不是与类型的一个特定实例关联。“static”这个名字有点不幸,因为它没有很好地描述这个概念——VB“Shared”关键字在某些方面更好,尽管它意味着它在所有实例之间共享,而不是与任何实例都没有关联。(无论是否创建过任何实例,静态成员都可用。)


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

作为旁注:人们对此感到困惑是可以理解的。如果静态方法/属性只能存在于静态类中(如果我们不必将每个成员标记为
static
),那就更清楚了。@Earwicker:我同意你的看法。顺便说一句:在哪些情况下使用这些类会有好处?使用
static
方法的
static
类是您编写纯函数、子例程、算法等价物的方式,无需特别访问任何对象的内部。其中一个重要的子集是扩展方法。作为旁注:人们对此感到困惑是可以理解的。如果静态方法/属性只能存在于静态类中(如果我们不必将每个成员标记为
static
),那就更清楚了。@Earwicker:我同意你的看法。顺便说一句:在哪些情况下使用这些类会有好处?使用
static
方法的
static
类是您编写纯函数、子例程、算法等价物的方式,无需特别访问任何对象的内部。其中一个重要的子集是扩展方法。
XmlReader reader = XmlReader.Create("test.xml");