繁体   English   中英

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

[英]Static Method of a Static Class vs. Static Method of a Non-Static Class ( C# )

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

谢谢,

二崁

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

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

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

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

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

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

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

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

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

var myClass = MyClass.Create();
var myClass = MyClass.Parse("serialized.MyClass");

在决定是否使用所有静态方法的普通类时,或者使用静态类时,我遇到的一个主要区别是普通类支持接口实现,而静态类则不支持。 我只在确定它是静态函数的集合(通常是辅助函数)时才使用静态类,并且永远不会出现在程序的主流中。 我推动接口编程,依赖注入,单元测试等。因此,对于程序的主流程,我使用普通类和静态方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM