C# 构造函数“CS1061”的c错误x不包含y的定义
嘿,伙计们;这个类不会编译。我得到的错误是: “BLBGameBase.KeyEvent”不存在 包含“KeyEvent”的定义 没有扩展方法“KeyEvent” 接受类型为的第一个参数 找不到“BLBGameBase.KeyEvent” 您是否缺少using指令或 程序集引用 无论如何,对于调用this.KeyEventD或类似命令的三行,都会引发此错误。C# 构造函数“CS1061”的c错误x不包含y的定义,c#,class,C#,Class,嘿,伙计们;这个类不会编译。我得到的错误是: “BLBGameBase.KeyEvent”不存在 包含“KeyEvent”的定义 没有扩展方法“KeyEvent” 接受类型为的第一个参数 找不到“BLBGameBase.KeyEvent” 您是否缺少using指令或 程序集引用 无论如何,对于调用this.KeyEventD或类似命令的三行,都会引发此错误。 我不理解这个错误,因为它认为没有方法接受KeyEvent的第一个参数,但我并没有试图用KeyEvent调用方法。。。谢谢。要从一个构造函数
我不理解这个错误,因为它认为没有方法接受KeyEvent的第一个参数,但我并没有试图用KeyEvent调用方法。。。谢谢。要从一个构造函数调用另一个构造函数,请使用以下语法:
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);
}
}
就您的代码而言,它正在尝试调用一个名为KeyEvent的常规非构造函数方法。要从一个构造函数调用另一个构造函数,请使用以下语法:
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);
}
}
就您的代码而言,它正在尝试调用一个名为KeyEvent的常规非构造函数方法。您对this.KeyEventD的调用正在生成一个错误,因为您以非法方式调用该类自己的构造函数。为您的KeyEvent方法指定一个返回类型以不生成构造函数。您对此的调用。KeyEventD正在生成错误,因为您以非法方式调用类自己的构造函数。为KeyEvent方法指定一个返回类型,使其不生成构造函数。这不是调用其他构造函数的方式。您应该使用以下方法:
public KeyEvent(Keys[] keys, eventmethod D)
: this(D)
{
this.keys = keys;
}
这不是你调用其他构造函数的方式。您应该使用以下方法:
public KeyEvent(Keys[] keys, eventmethod D)
: this(D)
{
this.keys = keys;
}
如果要调用另一个构造函数,必须使用base关键字:
public KeyEvent(eventmethod D)
: this(null, D, null)
{
}
public KeyEvent(Keys[] keys, eventmethod D)
: this(keys, D, null)
{
}
public KeyEvent(eventmethod D, object[] args)
: this(null, D, args)
{
}
public KeyEvent(Keys[] keys, eventmethod D, object[] args) {
this.args = args;
this.keys = keys;
em = D;
}
如果要调用另一个构造函数,必须使用base关键字:
public KeyEvent(eventmethod D)
: this(null, D, null)
{
}
public KeyEvent(Keys[] keys, eventmethod D)
: this(keys, D, null)
{
}
public KeyEvent(eventmethod D, object[] args)
: this(null, D, args)
{
}
public KeyEvent(Keys[] keys, eventmethod D, object[] args) {
this.args = args;
this.keys = keys;
em = D;
}
正如Kent所说,您可以使用此链接构造函数来调用同一类中的另一个构造函数,或者使用以下语法来调用基clas构造函数
public KeyEvent(eventmethod D, object[] args)
:this(D) {
this.args = args;
}
或
注意,这意味着链式构造器在构造器主体的其余部分之前执行-在执行主体中的任何其他代码之后,不能进行链式构造器调用
我建议您有一个构造函数体,它实际上做了一些事情,并使所有其他构造函数直接或间接地链接到该构造函数:
ClassName(parameters) : base(args)
{
// Body
}
我还建议将eventmethod类型和d参数重命名为更为传统的类型。正如Kent所说,您可以使用此方法来调用同一类中的另一个构造函数,或者使用以下语法来调用基clas构造函数
public KeyEvent(eventmethod D, object[] args)
:this(D) {
this.args = args;
}
或
注意,这意味着链式构造器在构造器主体的其余部分之前执行-在执行主体中的任何其他代码之后,不能进行链式构造器调用
我建议您有一个构造函数体,它实际上做了一些事情,并使所有其他构造函数直接或间接地链接到该构造函数:
ClassName(parameters) : base(args)
{
// Body
}
我还建议将eventmethod类型和d参数重命名为更为传统的类型。您应该使用构造函数链接:
public KeyEvent(eventmethod D) : this(null, D){
}
public KeyEvent(Keys[] keys, eventmethod D) : this(keys, D, null) {
}
public KeyEvent(eventmethod D, object[] args) : this(null, D, args) {
}
public KeyEvent(Keys[] keys, eventmethod D, object[] args) {
this.keys = keys;
this.args = args;
this.eventmethod = D;
}
您应该使用构造函数链接:
public KeyEvent(eventmethod D) : this(null, D){
}
public KeyEvent(Keys[] keys, eventmethod D) : this(keys, D, null) {
}
public KeyEvent(eventmethod D, object[] args) : this(null, D, args) {
}
public KeyEvent(Keys[] keys, eventmethod D, object[] args) {
this.keys = keys;
this.args = args;
this.eventmethod = D;
}