我試圖將一些代碼從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'/span> to 'char'/span>。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,
無效 = 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之后的所有內容對我來說幾乎都是魔法符號。這段亂七八糟的代碼是如何回傳Dictionary<Direction, CoordIJK>的,我可以做什么來解決它?我很天真地嘗試了只在Direction.Invalid前添加(char)來修復錯誤,但這并沒有解決問題。
任何幫助將是巨大的。
Edit001: 在原始代碼中添加了。
uj5u.com熱心網友回復:
問題是,你不能在.Net標準中這樣使用switch
試試這個
using System.Linq.Case。
public static readonly Dictionary<Direction, CoordIJK> DirectionToUnitVector =
Enum.GetValues(typeof(Direction)).Cast<Direction>().ToDictionary(e => e, e => {
return e == Direction.Invalid ? CoordIJK.InvalidIJKCoordinate : UnitVectors[(int)e]。
});
如果你添加了使用System.Linq;并且仍然有缺少ToDictionary()的問題,請嘗試這樣改寫:
public static readonly Dictionary<Direction, CoordIJK> DirectionToUnitVector =
System.Linq.Enumerable.ToDictionary(Enum.GetValues(typeof(Direction)).Cast<Direction>(), e => e, e => {
return e == Direction.Invalid ? CoordIJK.InvalidIJKCoordinate : UnitVectors[(int)e]。
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/306656.html
標籤:
