静态类的静态方法与非静态类的静态方法(C#)

Erk*_* Y. 48 c# oop methods static

我在接受采访时被问到了上述问题.你能解释一下这些差异吗?(性能 - 内存 - 使用 - 何时使用哪个?)

谢谢,

二崁

Set*_*son 53

声明一个静态类会将您对该类的意图记录为静态功能的集合,任何添加实例成员的人都会收到编译错误.

具有静态成员的非静态类通常表示该类被设计为在某个时刻被实例化.这些类的静态方法通常执行以下两种操作之一:

  1. 提供用于创建该类型实例的工厂方法;
  2. 提供不需要该类型实例的帮助程序功能;

此外,如前所述,扩展方法只能在静态类上声明.


Jar*_*Par 20

我假设你被问到了这些差异?

静态类上的静态方法可用于定义扩展方法.非静态类上的静态方法不能.

  • @Nathan这个问题专门提到C#所以是的 (7认同)

Mar*_*ell 16

在性能和内存使用方面; 没什么.拥有一个静态类意味着你知道没有实例,但是在1.1中有一个私有构造函数就足够了.如果只有一个实例没有意义,请使用静态类!(实用班等)


myt*_*thz 6

当您提供实用程序函数并且所有方法都是静态的时,我建议您在静态类中使用静态方法.

如果要提供仅处理实例的实用程序方法,我建议您在非静态类中使用静态方法.例如:

var myClass = MyClass.Create();
var myClass = MyClass.Parse("serialized.MyClass");
Run Code Online (Sandbox Code Playgroud)