c# - 私有(private)类别中属性(property)的访问级别

标签 c# .net vb.net access-modifiers access-levels

对于 Private Class,我应该将我的属性声明为 Public 还是 Friend(C# 中的内部)? 除了父类之外,任何其他类都无法访问我的私有(private)类。

最佳答案

一般来说,尽量保持封装完好无损。类之间的关系应该建立在“需要知道”的基础上。

由于我不熟悉您的应用程序设计,我确信我过于简单化了,但我会问自己以下问题:

  • 父类是唯一需要知道子类的类吗?如果是这样,它应该是私有(private)

  • 如果不是,所有其他需要知道子类的实体是否都在同一个项目中?如果是这样,它应该是内部

  • 如果项目外部的实体需要了解子类,则它应该是public

关于属性。如果您决定使用子类 private,则将属性设置为 public 是没有用的。
唯一可以拥有该类实例的对象是父类,它位于同一项目中,因此 internal 对于属性来说应该足够了。

注意
C# 没有 friend 修饰符。相反,您可以使用 internal,或最相似但不太优雅的选项:InternalsVisibleTo

关于c# - 私有(private)类别中属性(property)的访问级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20781951/

相关文章:

c# - 我可以使用属性让我的工厂知道它可以/应该在不违反 "Loosely-Coupled"规则的情况下实例化什么吗?

c# - 如何搜索来自另一个页面模型的串联名称列表?

c# - 最佳实践 如何使用 .net CORE 隔离动态代码/程序集

.net - 如何在 .NET 中通过索引有效地覆盖字符串的一部分?

c# - 让 String.Replace 只命中 "whole words"的方式

c# - 如何优化具有大文件 I/O(读取、写入)和计算的例程?

c# - 如何解析不同类型服务的 IEnumerable

vb.net - 我可以在 @Using.BegingForm() 中渲染 @Section 吗?

vb.net - 在Windows窗体上显示pdf?

c# - ASP.NET PhysicalFileProvider 在 Startup.cs 中不可用