我正在尝试将一些代码从 Net5.0 移植到 Netstandard2.1,但 C# 知识用完了。
我正在尝试重写此功能
public static readonly Dictionary<Direction, CoordIJK> DirectionToUnitVector =
Enum.GetValues<Direction>().ToDictionary(e => e, e => e switch {
Direction.Invalid => CoordIJK.InvalidIJKCoordinate,
_ => UnitVectors[(int)e]
});
到目前为止,我的尝试是:
public static readonly Dictionary<Direction, CoordIJK> DirectionToUnitVector =
(Direction[])Enum.GetValues(typeof(Direction)).ToString().ToDictionary(e => e, e => e switch {
Direction.Invalid => CoordIJK.InvalidIJKCoordinate,
_ => UnitVectors[(int)e]
});
这给了我
Error CS0266 Cannot implicitly convert type 'H3.Model.Direction' to 'char'. An explicit conversion exists (are you missing a cast?)
供参考,Direction
定义如下Enum
public enum Direction
{
Center = 0,
K = 1,
J = 2,
JK = 3,
I = 4,
IK = 5,
IJ = 6,
Invalid = 7
}
并CoordIJK.InvalidIJKCoordinate
定义为
public static readonly CoordIJK InvalidIJKCoordinate = new CoordIJK(-int.MaxValue, -int.MaxValue, -int.MaxValue);
public CoordIJK(int i, int j, int k) {
I = i;
J = j;
K = k;
}
首先,之后的一切DirectionToUnitVector
对我来说几乎都是魔法符号。乱码代码将如何返回 aDictionary<Direction, CoordIJK>
以及我能做些什么来修复它?我天真地尝试在(char)
之前添加Direction.Invalid
以修复错误,但这并没有解决问题。
任何帮助都会很棒。
Edit001:在原始代码中添加。