1

并没有真正处理太多抽象方法,而是正在研究抽象类中的抽象方法。

    protected abstract bool Validate()
    {
    }

当我创建上述类时,我收到一个错误,告诉我需要按照正常方法指定返回类型。这是正确的还是我做错了什么?

4

5 回答 5

5

如果你声明了抽象方法,那么你不应该给 body

protected abstract bool Validate();

如果它不是抽象方法声明,但您提供了抽象方法的实现,那么您应该从方法方法返回boolusingreturn语句以满足声明中的返回类型。

protected abstract bool Validate()
{
     //The method code 
     return false;
}

抽象方法声明引入了新的虚拟方法,但不提供该方法的实现。相反,非抽象派生类需要通过覆盖该方法来提供自己的实现。因为抽象方法不提供实际实现,所以抽象方法的方法体只包含一个分号MSDN

于 2013-12-05T10:42:01.497 回答
1

抽象方法不应该有主体。它被交给派生类来实现该方法。

protected abstract bool Validate();
于 2013-12-05T10:42:08.673 回答
0

看一下文档:

在方法或属性声明中使用 abstract 修饰符来指示该方法或属性不包含实现。抽象方法具有以下特点: 抽象方法隐含地是虚拟方法。抽象方法声明只允许在抽象类中。因为抽象方法声明没有提供实际的实现,所以没有方法体;方法声明仅以分号结尾,签名后没有大括号 ({ })。

http://msdn.microsoft.com/en-us/library/sf985hc5.aspx

于 2013-12-05T10:43:44.770 回答
0

在 C# 中,抽象方法没有实现,因此您的代码应如下所示:

//no { and } in there
protected abstract bool Validate();

您不能创建抽象类的实例,您应该创建从抽象类派生的另一个类,并在该新类中实现此方法。

于 2013-12-05T10:44:24.657 回答
0

正如其他人提到的抽象方法没有主体。他们没有的原因是类不能有实例。这意味着你永远不会有抽象类的对象。您必须扩展抽象类并在具体类中实现主体

于 2013-12-05T10:45:48.437 回答