(受这个评论的启发)
在IT技术中,是否存在需要使用 private
关键字的情况?
换言之,省略此关键字会导致不同的行为吗?
public class Foo
{
public int Bar { get; private set; }
}
省略“private”这个词会改变访问权限。private
关键字。 - SLaksprivate
关键字对另一种情况也会造成影响(请参阅我的新回答),这也是 C# 2 中的“新”功能。如果我正确理解你的年份计算,那么现在已经过去八年了。SLaks 的推测是,在 C# 1 中始终可以省略该关键字。 - Jeppe Stig Nielsen如果省略关键字 [
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
{
...
}
...
}
帐户
的第一个“部分”需要嵌套类Helper
为private
。因此,手写代码中尝试将Helper
设置为公共的尝试将失败!
但是,如果类的第一部分简单地省略了private
关键字,则所有内容都会编译。
因此,对于partial
类(和结构体、接口),访问级别自由声明。
partial class Name
意为“这个类的其他‘部分’可以决定可访问性应该是什么”。
而明确地给出默认可访问性(非嵌套类型的默认可访问性为internal
,嵌套类型的默认可访问性为private
)意味着“这个类必须具有最受限制的访问权限,其他‘部分’不能改变这个事实”。
private
并不涉及运行时行为,而是为了使您的应用程序易于维护。被private
隐藏的内容只能通过public
或protected
成员影响其类外部的代码。
因此,答案对于运行时行为是“否”,对于开发人员行为是“是”!
private
访问。正如现在发布的两个答案所建议的那样,这只是“几乎”。 - Andrew Barberprivate protected
是成员访问修饰符。私有受保护的成员可以被派生自包含类的类型访问,但仅限于其所在的程序集内部。
https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/private-protected
private
的非嵌套类型没有任何意义;它与internal
相同。 - SLaks