C#8中的公共接口成员

3
自从最新版本的c#发布以来,可以编写以下接口:
public interface IMyInterface
{
    public void MyMethod();
}

在我看来,这似乎是代码异味,因为我觉得本意是想编写以前可用的代码:

public interface IMyInterface
{
    void MyMethod();
}

这两个接口完全相同吗?public关键字是否添加/更改了任何内容?这是应该纠正的问题,还是我错了,现在应该始终使用public


https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-8.0/default-interface-methods#modifiers-in-interfaces - Kirk Larkin
访问修饰符可用于允许的所有类型的接口成员。公共访问级别是默认值,但也可以显式地给出。 - MakePeaceGreatAgain
1个回答

3
能够设置显式访问修饰符是在引入了 C# 8 的 默认接口方法 后添加的。默认接口方法支持不同的访问修饰符,因此至少为了一致性,应该能够为所有成员指定访问修饰符。如果您指定了无效的访问修饰符(例如没有主体的 private 方法),则代码将无法编译。

这两个接口完全相同吗?public 关键字是否有所添加/更改?

是的,默认访问修饰符是 public。显式设置它会得到相同的结果。

这是应该纠正的问题吗,还是我错了,现在应该始终使用 public

这取决于您。例如,如果您喜欢在类中为字段使用 private,那么现在可以在接口中为 public 应用相同的显式性。

默认接口方法 规范提案详细说明了访问修饰符的变更。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接