我有 ac# 结构,我需要禁止在其上调用 no args 构造函数。
MyStruct a;
/// init a by members // OK
MyStruct b = MyStruct.Fact(args); // OK, inits by memebers
MyStruct s = new MyStruct(); // can't have that
我这样做主要是为了强制所有成员的显式值,因为没有有效的默认值并且所有成员都必须具有有效值。
在 C++ 中这很容易,添加一个私有构造函数,但 C# 不允许这样做。
有没有办法防止上述情况?
我真的需要强制使用工厂,这样防止所有公共构造函数调用也能正常工作。
完全披露者:为了避免单声道依赖,c# 应用程序被自动翻译为 D ,其中new Struct()
产生了一个指针,这对我来说是个麻烦事。然而,尽管如此,这个问题还是相关的,所以请忽略它。