我最近读到 C# 和 CLI 标准定义了处理值类型和构造函数的不同方法。
根据 CLI 规范,值类型不能有无参数构造函数,而在 C# 规范中,值类型有默认的无参数构造函数。如果根据 CLI 规范,您需要在不指定任何参数的情况下创建值,则可以使用特殊指令来执行此操作。
所以我的问题是
- 为什么 C# 设计者会故意偏离 CLI 标准——这样做有什么好处,为什么 CLI 不允许这个功能?
- 在我有限的经验中,每当我发现自己使用“特殊指令”来实现最初不打算使用的功能时,这通常是一种黑客行为。这有什么不同?