在C#中,默认情况下方法是私有的吗?

40

如果一个方法没有指定其可访问级别,那么它默认是私有的吗?

void Item_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
    throw new NotImplementedException();
}        

上述方法是私有的吗?


@Cloud - 不过这样做是不会获得任何声望分的 ;) - MPritchard
@Cloud - 我想要一个更科学的答案。当VS自动生成方法存根时,它会创建一个具有私有访问权限的方法 - 而不是没有任何访问权限关键字。 - Eli Perpinyal
1
它根据Julien Lebosquain在他的答案中解释的相同规则执行。您可以将其视为一种“宁愿安全也不要后悔”的生成方法。拥有较少的可访问性和编译错误(在未来),比拥有您不知道的过多可访问性要好得多。 :) 此外,这种行为可能还与性能有关。 - pyrocumulus
4个回答

67

是的。如果您没有定义任何修改符合,则应用的最受限制的修改符为该位置使用的修饰符,例如方法为private,顶级类为internal等。


13

是的,它是私有的。


4

对于类中的方法,默认为私有。它会根据声明位置的范围而有所不同,这里有一个MSDN链接,提供了更详细的说明。


0

是的,对于方法,就像您的示例一样。

类和结构体成员(包括嵌套类和结构体)默认情况下具有私有访问权限。

但并非所有访问修饰符都是如此:

在命名空间中直接声明的类、记录和结构体(换句话说,不是嵌套在其他类或结构体中的)可以是公共的或内部的。如果未指定访问修饰符,则默认为 internal。

我认为这是一个好主意,因为在面向对象编程中,默认情况下应该将所有内容设置为私有,并且只有真正需要的内容才应标记为公共。

https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/access-modifiers


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