断言const变量之间关系的正确方法是什么

时间:2020-07-05 12:42:02

标签: c# constants

我有一个用于在游戏引擎中创作某些动画的类。该动画的变量的创作方式为const float,如下所示:

const float firstAnimationDuration = 3f;
const float secondAnimationDelay = 1f;
const float secondAnimationDuration = 1f;

在此示例中,第一个动画将花费3秒钟来完成,子动画将在第一个动画开始后1秒钟开始并花费1秒钟来完成。

假设secondAnimation将在firstAnimation之前完成,并且在这种情况下,动画代码将被构建。如果在第一个动画完成时第二个动画仍在运行,则系统可能无法正常运行。

问题是其他人可能稍后会编辑这些const float,因此我需要一种很好的方式来警告他们这些要求。

我添加了解释要求的注释,但理想情况下,我会添加某种控制台错误,或者更好的是编译时错误。

我在类初始化程序中尝试了以下代码:

if (secondAnimationDelay + secondAnimationDuration > firstAnimationDuration)
{
    Debug.LogError ("Second animation cannot be longer than First Animation");
}

但这会导致出现编译时警告,指出Debug.LogError是无法到达的代码(这很有意义!),但是在这种情况下,该警告是针对编译时问题,而不是运行时错误,因此它是应该无法访问。

鉴于我宁愿每次构建时都不会在控制台中留下警告,什么是防止这些const值更改以避免意外后果的最佳方法?

1 个答案:

答案 0 :(得分:0)

总的来说,这似乎是#pragma warning disable的合法用例。

if (secondAnimationDelay + secondAnimationDuration > firstAnimationDuration)
{
#pragma warning disable  
    Debug.LogError ("Second animation cannot be longer than First Animation");
#pragma warning restore
}