问题标签 [access-modifiers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
253949 浏览

class - 面向对象编程中什么是公共的、私有的和受保护的?

面向对象编程中什么是公共的、私有的和受保护的?

0 投票
2 回答
592 浏览

vb.net - 有没有办法让一个值只能被嵌套类 VB.NET 的父级访问?

总的来说,按照OOP范式,我对封装的理解基本上是这样说的:

  1. 如果成员是私有的,则只能由类访问。
  2. 如果成员受保护,则只能由基类和任何派生类访问。
  3. 如果成员是公开的,则任何人都可以访问它。

如果我有一个嵌套类,我可以声明一个属性只能对该类及其嵌套的父类访问吗?例如:

在示例中,如果这些成员是 Private 或 Protected,我无法从 ContainerClass 的实例直接访问 myNestedObject.myInt 或 myNestedObject.myDbl。但是假设我不想让它们公开,因为那样它们就太暴露了:它们可以从任何地方更改,而不仅仅是在 ContainerClass 对象中。将它们声明为 Friend 仍然太弱,因为这将允许它们在应用程序中的任何位置进行更改。

有什么办法可以完成我在这里的目标吗?如果没有,谁能想到一种更明智的方法来实现这样的目标?

0 投票
8 回答
6879 浏览

c# - 为什么内部保护不比内部更严格?

我想创建一个内部自动属性:

我认为可以使 setterprotectedprotected internal- 但我总是得到错误可访问性修饰符必须比属性更具限制性。不是这样吗?Private对我没有帮助,在这里。

编辑:
问题是:如何使用内部 getter 和受保护的 setter 实现自动属性?

0 投票
2 回答
14713 浏览

c# - C#中接口成员的访问修饰符

我从以下属性中收到编译错误。
错误是:

“修饰符‘public’对此项目无效”

但是如果我删除它,IWorkItemControl它编译得很好。

为什么会出现此错误,在签名中有/没有接口名称有什么区别?

0 投票
6 回答
205 浏览

oop - 正确应用访问修饰符

我是一名学生,正在寻找可以帮助我进一步了解如何在编写成员/类型时正确地将访问修饰符应用于成员/类型的资源。

我知道(在 C# 中)设置了哪些限制访问修饰符,如私有、公共、受保护等。当我编写自己的小项目时,我倾向于将所有内容都公开。我确信这是一种绝对可怕的做法,因为它只是将封装扔出窗外。我只是不知道何时使用内部与私人之类的东西是正确的。

有没有人有任何好的资源来帮助我理解访问修饰符的正确使用?

0 投票
4 回答
8875 浏览

c# - MVVM:VM 对象应该直接暴露 M 对象,还是仅通过委托给 M 的 getter 的 getter?

最好的解释方法是举例:

这是模型

这是视图模型

我的问题是:
vm应该将人暴露给数据模板还是用他自己的属性封装模型属性?

0 投票
3 回答
4234 浏览

c# - 更改 ASP.NET 控件的访问修饰符

如果我将控件放在这样的 .aspx 文件中;

我在页面的 .aspx.designer.cs 文件中获得了一个声明的控件;

但我想将控件的访问修饰符更改为public. 我可以设置任何属性或类似属性来更改访问修饰符吗?

就是我想要这样做的原因。我正在尝试让跨页面回发工作得又好又整齐。我有两页:

当用户单击 FirstPage.MyButton 时,我想将 的值FirstPage.MyTextBox.Text写入SecondPage.MyLabel.Text。我可以使用 Page.FindControl 来完成,但这似乎不能替代将前一页转换为 FirstPage 对象并直接引用其上的 MyTextBox 控件。像这样的东西;

有没有办法改变访问修饰符?

0 投票
7 回答
25136 浏览

c# - 内部抽象类:如何隐藏程序集外的用法?

我有一个公共程序集/项目,它有一个抽象基类,然后是几个我想向其他程序集公开的派生类。

我不希望抽象基类出现在 Intellisense 的这些其他程序集中,所以我想我会成功internal,但我收到了这个错误:

可访问性不一致:基类“设置”比“IrcSettings”类更难访问......

我真的不明白这一点。我被迫制作抽象Settingspublic,因此在这个程序集之外可见。

我怎样才能做这门课internal呢?

0 投票
4 回答
9729 浏览

c# - C# 与 Java 中的访问修饰符最佳实践

我了解 OOD 中的经验法则是尽可能合理地减少对给定对象的所有成员的访问。

C# 和 Java 似乎都实现了相同的访问修饰符集;然而,让我困惑一段时间的事情是为什么 Java 类似乎大多被声明为公共而 C# 类似乎大多被声明为默认。 这些语言是否有一些微妙之处强加了这些差异,或者仅仅是惯例问题还是什么?

我发现自己经常检查我的 C# 代码(我习惯性地将大多数类公开,除了内部类、匿名类和其他范围狭窄且有用的类)以试图取悦编译器,但是我想知道我是否可能遗漏了什么重要的。

0 投票
7 回答
319203 浏览

c# - 什么是 C# 中 Java 的 final 等价物?

finalC#中Java的等价物是什么?