(受此评论启发)
是否有需要使用private
关键字的情况?
(换句话说,省略关键字会导致不同行为的情况)
public class Foo
{
public int Bar { get; private set; }
}
省略“私人”一词会改变可访问性。
省略关键字 [
private
] 会导致不同行为的情况
David Yaw 的回答给出了最常见的情况。这是另一个:
在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
)意味着“此类必须具有最受限制的访问权限,而其他'部分'不能改变这一事实”。
private
与运行时行为无关。这是为了使您的应用程序可维护。隐藏的内容private
只能通过public
orprotected
成员影响其类之外的代码。
因此,对于运行时行为,答案是“否”,对于开发人员行为,答案是“是”!
在 C# 版本 7.2 及更高版本中。
关键字组合是private protected
成员访问修饰符。私有受保护成员可由从包含类派生的类型访问,但只能在其包含程序集中。
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/private-protected