제 질문은 간단하지만 원하는 방식으로 코드를 구현하는 방법을 찾지 못했습니다. 그래서 구현하고자하는 코드가 좋지 않은지 궁금해하기 시작했습니다. 그리고 그것이 있다면, 그것을하는 가장 좋은 방법은 무엇입니까. 여기C#에서 정수 상수로 enum 사용하기
은 간다 :
에 가장 적합한 오버로드 된 메서드에 일치 'InputManager.Add (USHORT, 키)'
이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(); } }
이 코드는 이러한 종류의 오류를주고, 컴파일되지 않습니다 일부 잘못된 인수를
인수를 가지고 '1': 나는를 사용하는 경우 'USHORT'
에 'RegisteredInput'에서 변환 할 수 없습니다 manager.Add((ushort)RegisteredInput.Up, Keys.Q);
처럼 캐스트하면 효과가 있습니다. 하지만 캐스트가 명시해야하기 때문에 C#에서 C#과 같은 코드를 권장하지 않는지 궁금 해서요. 더 좋은 방법이 있다면 (많이 쓰지 않는 모든 값에 const ushort
을 사용하는 것과 같습니다.).
내가 지금까지 얻은 가장 좋은 대답은 this thread 이었지만 해킹처럼 들립니다. 걱정이됩니다.
감사합니다.
사전이 'Dictionary'로 정의되지 않은 이유는 무엇입니까? 또한, 당신이 일에 대해 물어볼 때 웹 사이트에 오류 메시지와 코드를 다시 입력하는 것을 피하십시오. 우리가 끊어 버리게 될 잘못된 일을 할 기회가 있습니다. 마찬가지로 ... 예외 메시지가 실제로 메소드에 "Addd"의 이름을 3d로 지정 했습니까? 실제로 사용 된 실제 코드를 복사하고 다른 문제가있는 단순화 된 문자를 다시 입력하지 않도록 어떻게 신뢰할 수 있습니까? –
반복 된 키가 필요 없기 때문에. 오류 메시지에 대해서는 다시 입력하지 않았으며 관련이없는 네임 스페이스를 많이 삭제했습니다. 나는 영어가 아니기 때문에 메서드의 실제 이름도 변경했습니다. –
"반복 된 키"가 무슨 뜻인지 이해하지 못합니다. 당신은 정교 할 수 있습니까? –