Aci*_*onX -1 c# switch-statement unity-game-engine
我正在关注有关在 Unity 中生成 Minecraft 风格地形的 YouTube 教程,在教程的第 10 部分中,编写了一个脚本,其中包含一个以语句结尾的函数return x switch
。switch的具体内容如下:
public static Vector3Int GetVector(this Direction direction)
{
return direction switch
{
Direction.up => Vector3Int.up,
Direction.down => Vector3Int.down,
Direction.right => Vector3Int.right,
Direction.left => Vector3Int.left,
Direction.forward => Vector3Int.forward,
Direction.backwards => Vector3Int.back,
=> throw new Exception("Invalid direction provided.")
};
}
Run Code Online (Sandbox Code Playgroud)
Direction
是一个单独脚本中的枚举,其中包含forward
, right
, backwards
, left
, up
, 和down
, 按确切的顺序。问题是,一旦编译了代码,我就会在 Unity 中从 DirectionExtensions.cs(包含返回开关的脚本)收到此错误:
Assets/Scripts/Terrain/DirectionExtensions.cs(17,52):错误 CS8504:模式丢失
我尝试在 Google 上搜索错误代码和错误消息,但结果要么是参考资料(例如 C# 错误消息列表),要么是不相关的 Unity 错误。我没有发现任何实际发生过此错误的例子。不,该错误不是预期的,因此本教程不会演示如何在任何时候修复它。如何解决此错误以便我可以继续处理我的项目?
您缺少discard
捕获与先前模式不匹配的所有情况的方法:
public static Vector3Int GetVector(this Direction direction)
{
return direction switch
{
Direction.up => Vector3Int.up,
Direction.down => Vector3Int.down,
Direction.right => Vector3Int.right,
Direction.left => Vector3Int.left,
Direction.forward => Vector3Int.forward,
Direction.backwards => Vector3Int.back,
_ => throw new Exception("Invalid direction provided.")
};
}
Run Code Online (Sandbox Code Playgroud)
注意下划线
_ => throw new Exception("Invalid direction provided.")
Run Code Online (Sandbox Code Playgroud)
文档(与开关匹配的模式)解释道:
丢弃模式可用于与 switch 表达式的模式匹配。每个表达式(包括 null)始终与丢弃模式匹配。
归档时间: |
|
查看次数: |
154 次 |
最近记录: |