并没有真正处理太多抽象方法,而是正在研究抽象类中的抽象方法。
protected abstract bool Validate()
{
}
当我创建上述类时,我收到一个错误,告诉我需要按照正常方法指定返回类型。这是正确的还是我做错了什么?
并没有真正处理太多抽象方法,而是正在研究抽象类中的抽象方法。
protected abstract bool Validate()
{
}
当我创建上述类时,我收到一个错误,告诉我需要按照正常方法指定返回类型。这是正确的还是我做错了什么?
如果你声明了抽象方法,那么你不应该给 body
protected abstract bool Validate();
如果它不是抽象方法声明,但您提供了抽象方法的实现,那么您应该从方法方法返回bool
usingreturn
语句以满足声明中的返回类型。
protected abstract bool Validate()
{
//The method code
return false;
}
抽象方法声明引入了新的虚拟方法,但不提供该方法的实现。相反,非抽象派生类需要通过覆盖该方法来提供自己的实现。因为抽象方法不提供实际实现,所以抽象方法的方法体只包含一个分号MSDN。
抽象方法不应该有主体。它被交给派生类来实现该方法。
protected abstract bool Validate();
看一下文档:
在方法或属性声明中使用 abstract 修饰符来指示该方法或属性不包含实现。抽象方法具有以下特点: 抽象方法隐含地是虚拟方法。抽象方法声明只允许在抽象类中。因为抽象方法声明没有提供实际的实现,所以没有方法体;方法声明仅以分号结尾,签名后没有大括号 ({ })。
在 C# 中,抽象方法没有实现,因此您的代码应如下所示:
//no { and } in there
protected abstract bool Validate();
您不能创建抽象类的实例,您应该创建从抽象类派生的另一个类,并在该新类中实现此方法。
正如其他人提到的抽象方法没有主体。他们没有的原因是类不能有实例。这意味着你永远不会有抽象类的对象。您必须扩展抽象类并在具体类中实现主体