76得票7回答
如何限制对嵌套类成员的访问只在封闭类中可见?

是否可以指定嵌套类的成员只能被封闭类访问,而不能被其他类访问? 以下是问题的示例(当然我的实际代码会更加复杂...):public class Journal { public class JournalEntry { public JournalEntry(...

39得票6回答
受保护的成员/字段真的那么糟糕吗?

如果您阅读MSDN中有关C#的命名约定,您会注意到它指出始终优先使用属性而不是公共和受保护字段。甚至有些人告诉我你永远不应该使用公共或受保护的字段。我同意我还没有找到需要公共字段的原因,但是使用受保护字段真的那么糟糕吗? 我可以理解如果您需要确保在获取/设置值时执行某些验证检查,但是在我看来...

37得票3回答
为什么带有协议一致性的扩展不能具有特定的访问级别?

假设我们有以下示例代码:protocol MyProtocol { func someFunction() } public class MyClass { } public extension MyClass: MyProtocol { func someFunctio...

17得票9回答
常见的CMS角色和访问级别

我目前正在编写一款CMS,并记得有人(可能是在这里)批评现有的CMS没有足够强大的用户权限系统。我已经制定了一种方法,但我觉得它已经陷入了通常会过于详细的陷阱,这使得最终用户难以理解和实施。 我认为拥有一系列带有权限的默认用户角色将是解决这个问题的答案,因此我的问题是: 您希望在CMS中看...

16得票3回答
fileprivate和private扩展之间的区别是什么?

Swift 3.0 我知道fileprivate访问级别修饰符限制了函数/属性的使用范围,只能在声明它的源文件中使用,而private则限制了其在声明的词法作用域中的使用。但似乎这个规则不适用于扩展。例如,这段代码是有效的:class Foo { } fileprivate extensi...

14得票1回答
类型为B的临时变量拥有一个受保护的析构函数,但其类型应为A。

在使用Clang 8.0.0+和 -std=c++17编译的以下代码中,使用B{}创建派生类实例会出现错误error: temporary of type 'A' has protected destructor。为什么该临时对象的类型是B(因此应具有公共析构函数),但错误消息中出现了A? ...

12得票7回答
Swift 4中private和fileprivate有什么区别?

在 Swift 4 中,由于现在 private 在同一源代码文件的扩展中也是可见的,那么它与 fileprivate 访问修饰符有何不同? 背景:在 Swift 3 中,类中的私有变量在同一文件的扩展中不可见。因此必须使用 fileprivate。

8得票5回答
你选择哪个,protected 还是 internal?

如果我有一个类,其中一个方法我希望它是protected和internal的。 我希望只有程序集中的派生类能够调用它。 由于protected internal的含义是protected或者internal,你必须做出选择。在这种情况下,你会选择protected还是internal?

7得票3回答
有一种具有基于对象的访问级别的编程语言吗?

关于Java、C#、C++和PHP中访问级别的一个常见误解是,它适用于对象而不是类。也就是说,例如,类X的对象不能看到另一个X的私有成员。实际上,访问级别是基于类的,一个X对象可以轻松地引用另一个X的私有成员。 是否存在一种语言具有基于对象的访问级别?它们是替代还是附加于基于类的访问级别?这...

7得票2回答
如何隐藏一个对象的受保护过程?

在一个基类中,有一个protected过程。当继承该类时,我想隐藏该过程以防止从外部使用它。我尝试在private和strict private部分内重写它,但仍然可以从外部调用。原始类不是我的,所以我无法更改TOriginal的定义。 是否可能在我的继承类中隐藏此过程?如何实现? typ...