gpt4 book ai didi

c# - 使 C# 6 struct 无参数构造函数不可用

转载 作者:太空宇宙 更新时间:2023-11-03 23:40:41 25 4
gpt4 key购买 nike

C# 6 允许在结构上声明无参数构造函数。然而,它们必须是公开的,并且在某些情况下,人们想要强制其他开发人员使用参数化构造函数,所以我想知道从 CLR 的角度来看,通过在内部抛出异常来使无参数构造函数不可用是否可以,所以它看起来像那:

public struct Foo
{
public Foo()
{
throw new InvalidOperationException("This constructor is not supported.");
}

public Foo(int i) { ... }
}

最佳答案

你可以的。至于这是否是一个好主意是相当主观的。 (我强烈反对使用它,但显然我不能阻止你这样做。)

如果您的目标是确保永远不会出现在不调用参数化构造函数的情况下构造对象的情况,并且永远不会将字段保留为默认值,那么这不会做到这一点。有一些方法,例如使用 default(Foo) 创建对象的实例而不调用任何用户定义的构造函数。

如果你问 CLR 是否会崩溃并且世界会因为你从 struct 的构造函数中抛出异常而崩溃成一个黑洞,那么不,那不会发生。当调用此构造函数时,它会抛出并沿着调用堆栈向上移动直到被捕获,就像任何其他抛出的异常一样。

关于c# - 使 C# 6 struct 无参数构造函数不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29105561/

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