c# - c#8 中的公共(public)接口(interface)成员

标签 c# interface member public c#-8.0

从最新版的c#开始,可以写出如下接口(interface):

public interface IMyInterface
{
    public void MyMethod();
}

这对我来说似乎是一种代码味道,因为我觉得它的目的是编写以前可用的代码:

public interface IMyInterface
{
    void MyMethod();
}

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

最佳答案

能够设置显式访问修饰符是随着 default interface methods 的引入而添加的C# 8 附带的默认接口(interface)方法支持不同的访问修饰符,因此至少为了一致性能够为所有成员指定访问修饰符是有意义的。如果您指定了一个无效的访问修饰符(例如没有主体的 private 方法),代码将无法编译。

Are those two interfaces exactly the same ? Does the public keyword add/changes anything ?

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

Is this something that should be corrected, or am I wrong and should public be consistently used now ?

这取决于你。例如,如果您喜欢将 private 用于类中的字段,那么您可能希望在您的接口(interface)中为 public 应用相同的显式性,因为这是可能的。

default interface methods规范提案涉及访问修饰符更改的细节。

关于c# - c#8 中的公共(public)接口(interface)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58972582/

相关文章:

java - 包含具有相同签名的方法的多个接口(interface)

c++ - 源文件中的嵌套类定义

c# - 可空变量类型 - .value 成员

c# - LINQ - 过滤子集合

c# - 将图像插入数据库时​​出错 c#

c# - 为什么 Entity Framework 不在此处更新子对象?

objective-c - Objective C 协议(protocol)等同于 Java 接口(interface)?

java - 为什么我们需要 Java 中的接口(interface)?

C#访问静态函数中的非静态成员

C# 不是一个事件