我正在使用C#编写一个应用程序,需要进行大量计算。所有计算围绕基本结构Value展开。它基本上是带有一些附加参数(精度等)的double。
必须使用结构体,因为将创建太多的实例以至于无法承受堆分配。
现在,我需要确保它们都正确地初始化。
尽管我提供了默认构造函数,但我不能声明默认的显式构造函数。默认构造函数会将所有内容初始化为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
}
如果没有显式调用构造函数并且仍在访问结构,则抛出异常是可以的,但始终检查会花费太多时间。
我现在几乎失去了希望,请帮忙!
struct
来提高性能。你应该尽可能以最清晰、最简单的方式编写代码,然后在优化之前进行分析。 - Jay Bazuzi