常规类是否只包含方法签名(如界面)?

时间:2012-07-18 20:23:56

标签: c#

我现在正在看一些代码,我有点困惑。这个类不是接口,但为什么没有定义这些方法呢?此外,床边方法签名,有一个定期的财产。非常混乱!

public class MyClass
{
   public string Foo(string str1);
   public string Bar(string str, int i);

   public string myProperty { get; set; }
}

感谢您的帮助

2 个答案:

答案 0 :(得分:6)

不,如图所示无效,您可以通过尝试编译来证明这一点。对于包含未实现方法的类,必须将其声明为abstract,这同样适用于每个未实现的方法。

abstract类在概念上类似于接口,但它们也可能包含实现。这使得它们对于某些方法可以在继承层次结构中共享共同实现的场景非常有用,但其他方法只有在通过后代类型实现时才有意义。

标记为externpartial的方法也可能缺少正文,但extern方法通常是互操作的(因此它在本机代码中实现)和partial方法将在另一个.cs文件中实现(并且只能在标记为partial的类中声明。)

顺便说一句,该属性很好,因为它是自动的(语法糖,这意味着将为您创建支持字段,get / set方法只返回/设置该字段,仅此而已)。

答案 1 :(得分:1)

您可以将方法标记为abstract,然后您将拥有abstract

但你为什么要那样做呢?如果基类中没有任何代码,只需使用接口