当我float.IsFinite(float f)在 C# shell 中使用时,我没有问题。但是,当我在 Unity 的上下文中使用它时,我收到一个错误,声称它没有定义:
以下是相关代码:
public static bool IsFinite(Unit u) => float.IsFinite(u.blocks);
Unit是我在其中编写了上述行的结构。
我的问题是:为什么会出现这个错误,我该如何解决?
当我float.IsFinite(float f)在 C# shell 中使用时,我没有问题。但是,当我在 Unity 的上下文中使用它时,我收到一个错误,声称它没有定义:
以下是相关代码:
public static bool IsFinite(Unit u) => float.IsFinite(u.blocks);
Unit是我在其中编写了上述行的结构。
我的问题是:为什么会出现这个错误,我该如何解决?
float.IsFinite存在于 .NET 5、.NET Standard 2.1 和 .NET Core 2.1 中。然而,Unity 都不支持这些框架,只支持 .NET Standard 2.0。这就是您不能在此处使用该功能的原因。
但是,很容易为缺少该功能创建一个解决方法:
public static bool IsFinite(Unit u) => !float.IsInfinity(u.blocks)
Unity 支持论坛上有一个关于 .NET 5 的激烈讨论