28

(受此评论启发)

是否有需要使用private关键字的情况?
(换句话说,省略关键字会导致不同行为的情况)

4

4 回答 4

47
public class Foo
{
    public int Bar { get; private set; }
}

省略“私人”一词会改变可访问性。

于 2011-06-14T19:57:07.293 回答
8

省略关键字 [ 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)意味着“此类必须具有最受限制的访问权限,而其他'部分'不能改变这一事实”。

于 2013-09-12T15:23:09.717 回答
1

private与运行时行为无关。这是为了使您的应用程序可维护。隐藏的内容private只能通过publicorprotected成员影响其类之外的代码。

因此,对于运行时行为,答案是“否”,对于开发人员行为,答案是“是”!

于 2011-06-14T19:56:51.380 回答
1

在 C# 版本 7.2 及更高版本中。

关键字组合是private protected成员访问修饰符。私有受保护成员可由从包含类派生的类型访问,但只能在其包含程序集中。

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/private-protected

于 2018-06-23T09:44:04.013 回答