我现在正在看一些代码,我有点困惑。这个类不是接口,但是为什么没有定义那些方法呢?此外,床头方法签名,还有一个常规属性。很混乱!
public class MyClass
{
public string Foo(string str1);
public string Bar(string str, int i);
public string myProperty { get; set; }
}
感谢您的帮助
我现在正在看一些代码,我有点困惑。这个类不是接口,但是为什么没有定义那些方法呢?此外,床头方法签名,还有一个常规属性。很混乱!
public class MyClass
{
public string Foo(string str1);
public string Bar(string str, int i);
public string myProperty { get; set; }
}
感谢您的帮助
不,如图所示,这是无效的,您可以通过尝试编译它来证明这一点。对于包含未实现方法的类,它必须声明为abstract
,并且同样适用于每个未实现的方法。
abstract
类在概念上类似于接口,但它们也可能包含实现。这使得它们对于某些方法可能在继承层次结构中共享一个公共实现但其他方法仅在由后代类型实现时才有意义的场景很有用。
标记为extern
orpartial
的方法也可以缺少主体,但extern
方法通常是互操作的(因此它在本机代码中实现),并且partial
方法将在另一个.cs
文件中实现(并且只能在标记为的类中声明partial
)。
顺便说一句,该属性很好,因为它是自动的(语法糖,这意味着将为您创建支持字段,而 get/set 方法只是返回/设置该字段,仅此而已)。
您可以将方法标记为abstract
,然后您将拥有一个abstract
类
但你为什么要这样做?如果您在基类中没有任何代码,只需使用接口