我有一个界面
interface A
{
void foo();
}
有一堂课
class B: A
{
public void foo()
{
}
}
一切都很好,但有两个问题
- 怎么,看B类,你能理解一个方法
foo()
是一个接口方法吗?没有像override
orvirtual
这样的词,不清楚这是类方法还是接口方法 - 这导致这样一个事实,如果我从类中删除接口的实现,那么什么也不会发生
class B
{
public void foo()
{
}
}
没有警告该方法在接口或类似的东西中
但我确定我只是不知道如何在 C# 中使用它
PS
假设这是在Java
,等中完美实现的Kotlin
,这是一种相当先进的语言,奇怪的是这里不存在C++
C#
截图显示有一个类IndexableTask
实现了接口IIndexable
并重写了它的两个方法GetIdx()
,SetIdx(int idx)
如果你看这个类,不清楚这些是不是类方法,如果这些是重写的接口方法
从 2021 年 6 月 5 日更新
在 Visual Studio 2019 v16.10 中,这个功能终于定期出现了
默认禁用,但您可以在设置中启用它:Tools> Options> Text Editor> C#>Advanced并设置复选框Show inheritance margin
它看起来像这样:
在回答时,该语言中没有这样的功能。
它仍然只使用开发环境的工具。在 Visual Studio 2019 (16.4.1) 的设置中,我没有找到类似的东西,所以我必须为此安装一些扩展。
例如,这是我找到的第一个并且可以免费使用:Inheritance Margin
当然,这并不能解决从接口中删除声明后剩余方法的问题(这在你提到的语言中是如何解决的?)。类中的方法将保留。但是,另一方面,没有在任何接口中声明的类的每个公共方法都应该引起怀疑并引起对自身的额外关注。是的,CodeLens 显示的链接数量应该减少,但不会减少到零,当然,会有链接指向测试这个特定类的测试。
您可以显式实现这样的方法:
如果类一次实现多个接口,这种方法特别有用。
https://www.tutorialsteacher.com/csharp/csharp-interface