在C#中使用enum作为整数常量

在C#中使用enum作为整数常量,第1张

概述我的问题很简单,但我找不到按照我希望的方式实现代码的方法.所以我开始想知道我想要实现的代码是不是很好.如果是,那么最好的方法是什么. 在这里: class InputManager { SortedDictionary<ushort,Keys> inputList = new SortedDictionary<ushort,Keys>(); public void A 我的问题很简单,但我找不到按照我希望的方式实现代码的方法.所以我开始想知道我想要实现的代码是不是很好.如果是,那么最好的方法是什么.

在这里:

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作为整数常量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1241924.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存