(灵感来自this comment)
是否存在您需要使用private
关键字的情况?
(换句话说,省略关键字会导致不同行为的情况)
答案 0 :(得分:46)
public class Foo
{
public int Bar { get; private set; }
}
省略“私人”一词会改变可访问性。
答案 1 :(得分:8)
David Yaw的回答给出了最常见的情况。这是另一个:省略关键字[
private
]会导致不同行为的情况
在Account_generated.cs
:
// Generated file. Do not edit!
public partial class Account
{
...
private partial class Helper
{
...
}
...
}
在AccountHandCoded.cs
:
public partial class Account
{
...
public partial class Helper
{
...
}
...
}
以上代码无法编译。 Account
的第一个“部分”要求 嵌套类Helper
为private
。因此,手动编码器使Helper
公开的尝试必定会失败!
但是,如果该类的第一部分只是省略了private
关键字,则所有都将编译。
因此对于partial
类(和结构,接口),访问级别的声明
partial class Name
表示“允许此类的其他”部分决定可访问性应该是什么“。
虽然明确给出了默认的可访问性(非嵌套类型为internal
,嵌套类型为private
但意味着“此类必须具有最受限制的访问权限,而其他'部分'无法改变这一事实“。
答案 2 :(得分:1)
private
与运行时行为无关。这是为了使您的应用程序可维护。 private
隐藏的内容只能通过public
或protected
成员影响其类外的代码。
因此,运行时行为的答案是“不”,开发人员行为的答案是“是”!
答案 3 :(得分:0)
在C#7.2和更高版本中。
private protected
关键字组合是成员访问修饰符。受保护的私有成员可以通过包含类的派生类型进行访问,但只能在其包含的程序集中。
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/private-protected