在这里:
class inputManager { SortedDictionary<ushort,Keys> inputList = new SortedDictionary<ushort,Keys>(); public voID Add(ushort ID,Keys key) {...} public bool Ispressed(ushort ID) {...} } class Main { private enum Registeredinput : ushort { Up,Down,Confirm } public Main() { inputManager manager = new inputManager(); manager.Add(Registeredinput.Up,Keys.Q); manager.Add(Registeredinput.Down,Keys.A); manager.Add(Registeredinput.Confirm,Keys.Enter); } voID update() { if(manager.Ispressed(Registeredinput.Up)) action(); }}
此代码将无法编译,会出现此类错误:
The best overloaded method match for ‘inputManager.Add(ushort,Keys)’ has some invalID arguments
Argument ‘1’: cannot convert from ‘Registeredinput’ to ‘ushort’
如果我使用像manager.Add((ushort)Registeredinput.Up,Keys.Q);它会工作.但是因为演员必须是明确的,我想知道它是不是在C#中推荐的代码,就像它在C中并且是否有更好的方法(比如对每个值使用const ushort,我有点不喜欢)许多).
到目前为止我得到的最佳答案是this thread,但听起来很像黑客,我很担心.
谢谢!
解决方法 使inputManager成为通用类型. IE:class inputManager<T>{ SortedDictionary<T,Keys> inputList = new SortedDictionary<T,Keys>(); public voID add(T ID,Keys key) {...} public bool ispressed(T ID) {...} }总结
以上是内存溢出为你收集整理的在C#中使用enum作为整数常量全部内容,希望文章能够帮你解决在C#中使用enum作为整数常量所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)