c#8中的公共接口成员

c#8中的公共接口成员,c#,interface,member,public,c#-8.0,C#,Interface,Member,Public,C# 8.0,由于c#的最新版本,因此可以编写以下接口: public interface IMyInterface { public void MyMethod(); } 对我来说,这似乎是一种代码味道,因为我觉得这样做的目的是编写以前可用的: public interface IMyInterface { void MyMethod(); } 这两个接口完全相同吗?public关键字是否添加/更改了任何内容?这是应该纠正的,还是我错了,现在应该一直使用public?能够设置显式访问修饰

由于c#的最新版本,因此可以编写以下接口:

public interface IMyInterface
{
    public void MyMethod();
}
对我来说,这似乎是一种代码味道,因为我觉得这样做的目的是编写以前可用的:

public interface IMyInterface
{
    void MyMethod();
}

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

能够设置显式访问修饰符是随着C#8的引入而增加的。默认接口方法支持不同的访问修饰符,因此至少对于一致性来说,能够为所有成员指定访问修饰符是有意义的。如果指定的访问修饰符无效(例如,没有正文的
private
方法),代码将不会编译

这两个接口完全相同吗?
public
关键字是否添加/更改了任何内容

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

这是应该纠正的吗?还是我错了,应该一直使用
public

这取决于你。例如,如果您喜欢对类中的字段使用
private
,那么您可能希望在
public
的接口中应用相同的明确性,因为这是可能的


规范建议涉及访问修饰符更改的细节。

“访问修饰符可用于允许的所有类型成员的接口成员。访问级别public是默认值,但可以明确指定。”