public class KeyEvent {
        private Keys[] keys = null;
        public delegate void eventmethod();
        private eventmethod em;
        private object[] args;
        private bool thrown = false;
        public bool repeat = true;

        public bool isKey(Keys key) {
            if (keys == null) return true;
            foreach (Keys k in keys) {
                if (key == k) return true;
            }
            return false;
        }

        public void ThrowEvent() {
            if (!repeat && thrown) return;
            em.DynamicInvoke(args);
            this.thrown = true;
        }

        public KeyEvent(eventmethod D) {
            em = D;
        }
        public KeyEvent(Keys[] keys, eventmethod D) {
            this.keys = keys;
            this.KeyEvent(D);
        }
        public KeyEvent(eventmethod D, object[] args) {
            this.args = args;
            this.KeyEvent(D);
        }
        public KeyEvent(Keys[] keys, eventmethod D, object[] args) {
            this.args = args;
            this.KeyEvent(keys, D);
        }
    }


大家好;此类不会编译。我得到的错误是:


  'BLBGameBase.KeyEvent'不
  包含“ KeyEvent”的定义
  也没有扩展方法'KeyEvent'
  接受类型的第一个参数
  可以找到“ BLBGameBase.KeyEvent”
  (您是否缺少using指令或
  组装参考?)


无论如何,调用“ this.KeyEvent(D)”或类似内容的三行都会引发此错误。
我不明白该错误,因为它认为没有方法可以接受“ KeyEvent”的第一个参数,但是我没有尝试使用KeyEvent调用方法...谢谢。

最佳答案

要从另一个调用一个构造函数,请使用以下语法:

public KeyEvent(Keys[] keys, eventmethod D)
    : this(D)
{
    this.keys = keys;
}


正如您的代码所示,它正在尝试调用名为KeyEvent的常规方法(非构造函数)。

关于c# - 构造函数“CS1061”的C#错误“x不包含y的定义”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2012155/

10-12 12:30