【发布时间】:2022-11-25 02:47:44
【问题描述】:
我遇到了一个编译器错误,我不确定如何解决它。
基本上,我有一些下面描述的枚举类。
我创建了派生自 myTool 的抽象类 myTool 和 myTools。 由于某种原因,编译器不喜欢我为 MyTools 构造构造函数的方式并抛出错误
CS0030:无法将类型 int 转换为类型 T。
请告诉我如何解决这个问题。
public enum TOOLS { HAMMER =1, DRILL = 2, SCREWDRIVER =3, VACUUM=4 } public enum EQUIPMENTS { MOWER=1, TRIMMER=2, SNOWBLOWER=3 } public abstract class MyTool { protected T _myStuff int quantity double price public MyTool(T t) { _myStuff =t; } ... properties... } public abstract class MyTools<T>:myTool<T> where T:System.Enum { protected MyTool<T>[] _myTools; public MyTool<T> this[int i]=> this._myTools[i]; public MyTools(int count, T t):base(t) { _myTools = new MyTools<T>[count]; for (int i=0; i<count;i++) { _myTools[i]=(T)(i+1); } } }
【问题讨论】:
-
您正在尝试将
i+1转换为T。显然,这是行不通的。 -
public abstract class MyTools<T>:myTool<T>同时拥有MyTools<T>类型和myTools<T>类型是一个非常、非常、非常糟糕的想法。真是个糟糕的主意……
标签: c#