C# - 如何确保我的所有结构都已初始化?

Pau*_*tin 6 c# struct value-type

我正在用C#编写一个应用程序,它将进行大量计算.一切都围绕着基本的结构 - 价值.它基本上是一些额外的参数(精度等)的两倍.它必须是一个结构,因为将创建太多的它们来提供堆分配.现在,我需要确保它们都已正确初始化.我不能声明默认的显式构造函数,虽然我提供了默认构造函数,它使用0初始化所有内容,这在我的域中没有意义.

并且没有办法拒绝创建一个实例而不用参数调用我的构造函数...?

基本上我需要的是这个测试通过:

[Test]
public void HowDoesThisStructureInitializeByDefault()
{
   Value v = new Value(); - if this did not compile - it would have been ok!

   Assert.AreEqual(0, v.Val); - passes
   Assert.AreEqual(-1, v.Accuracy); - fails
}
Run Code Online (Sandbox Code Playgroud)

如果没有显式调用构造函数并且仍然访问结构,则抛出异常是可以的,但是检查所有时间都需要花费太多时间.

我现在几乎失去了希望,请帮忙!

Aar*_*ron 0

您是否希望使用默认构造函数将精度初始化为-1?我不认为你可以阻止某人使用new Value(),但你可以添加一个构造函数,让你使用new Value(10)并按照你想要的方式初始化准确性。

请参阅有关 [结构构造函数] 的 MSDN 页面 ( http://msdn.microsoft.com/en-us/library/aa288208(VS.71).aspx)

如果遇到精度为 0 的情况(如果该值永远没有意义!),您始终可以在使用您的结构的代码中抛出异常。