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的第一个“部分” 要求嵌套类Helperprivate 。 因此,手工编码器让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