C#需要私有关键字吗?
(受此评论的启发)
是否存在需要使用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
成员或protected
成员影响其类外的代码。
因此,对于运行时行为,答案是“不”,对于开发人员行为,答案是“是”!
在C#7.2及更高版本中。
private protected
关键字组合是成员访问修饰符。 私有受保护成员可以通过从包含类派生的类型访问,但只能在其包含的程序集中访问。
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/private-protected