gpt4 book ai didi

c# - 将一个类标记为静态是二进制破坏性更改吗?

转载 作者:行者123 更新时间:2023-11-30 19:58:19 24 4
gpt4 key购买 nike

我有一个只包含静态方法的实用程序类。如果我将类标记为静态,这是否是一个破坏性的二进制更改?

我比较了两者的 IL,除了默认构造函数(永远不应该使用)的丢失之外,我还可以看到以下差异...

未标记为静态的类:

.class public auto ansi beforefieldinit MyNamespace.MyClass

标记为静态的类:

.class public auto ansi abstract sealed beforefieldinit MyNamespace.MyClass

我不明白为什么这会是一个重大改变,但是......?

最佳答案

这取决于其他代码对您的类的使用:static 类的潜在使用比非静态类的限制要多得多。

  • 如果该类已像 static 一样使用,即使当时它不是静态的,代码也不会中断。
  • 如果该类已像非静态类一样使用,即已被继承或实例化,则更改是中断的。

由于通常您不能保证以某种方式使用您的非静态类,因此将以前的非静态类变为静态类应该被视为重大更改。如果您有超出您控制范围的代码依赖于您的类,请将旧类指定为废弃,并创建一个新的静态类来代替它。

关于c# - 将一个类标记为静态是二进制破坏性更改吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27399834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com