问题标签 [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.
class - 面向对象编程中什么是公共的、私有的和受保护的?
面向对象编程中什么是公共的、私有的和受保护的?
vb.net - 有没有办法让一个值只能被嵌套类 VB.NET 的父级访问?
总的来说,按照OOP范式,我对封装的理解基本上是这样说的:
- 如果成员是私有的,则只能由类访问。
- 如果成员受保护,则只能由基类和任何派生类访问。
- 如果成员是公开的,则任何人都可以访问它。
如果我有一个嵌套类,我可以声明一个属性只能对该类及其嵌套的父类访问吗?例如:
在示例中,如果这些成员是 Private 或 Protected,我无法从 ContainerClass 的实例直接访问 myNestedObject.myInt 或 myNestedObject.myDbl。但是假设我不想让它们公开,因为那样它们就太暴露了:它们可以从任何地方更改,而不仅仅是在 ContainerClass 对象中。将它们声明为 Friend 仍然太弱,因为这将允许它们在应用程序中的任何位置进行更改。
有什么办法可以完成我在这里的目标吗?如果没有,谁能想到一种更明智的方法来实现这样的目标?
c# - 为什么内部保护不比内部更严格?
我想创建一个内部自动属性:
我认为可以使 setterprotected
或protected internal
- 但我总是得到错误可访问性修饰符必须比属性更具限制性。不是这样吗?Private
对我没有帮助,在这里。
编辑:
问题是:如何使用内部 getter 和受保护的 setter 实现自动属性?
c# - C#中接口成员的访问修饰符
我从以下属性中收到编译错误。
错误是:
“修饰符‘public’对此项目无效”
但是如果我删除它,IWorkItemControl
它编译得很好。
为什么会出现此错误,在签名中有/没有接口名称有什么区别?
oop - 正确应用访问修饰符
我是一名学生,正在寻找可以帮助我进一步了解如何在编写成员/类型时正确地将访问修饰符应用于成员/类型的资源。
我知道(在 C# 中)设置了哪些限制访问修饰符,如私有、公共、受保护等。当我编写自己的小项目时,我倾向于将所有内容都公开。我确信这是一种绝对可怕的做法,因为它只是将封装扔出窗外。我只是不知道何时使用内部与私人之类的东西是正确的。
有没有人有任何好的资源来帮助我理解访问修饰符的正确使用?
c# - MVVM:VM 对象应该直接暴露 M 对象,还是仅通过委托给 M 的 getter 的 getter?
最好的解释方法是举例:
这是模型
这是视图模型
我的问题是:
vm应该将人暴露给数据模板还是用他自己的属性封装模型属性?
c# - 更改 ASP.NET 控件的访问修饰符
如果我将控件放在这样的 .aspx 文件中;
我在页面的 .aspx.designer.cs 文件中获得了一个声明的控件;
但我想将控件的访问修饰符更改为public
. 我可以设置任何属性或类似属性来更改访问修饰符吗?
这就是我想要这样做的原因。我正在尝试让跨页面回发工作得又好又整齐。我有两页:
当用户单击 FirstPage.MyButton 时,我想将 的值FirstPage.MyTextBox.Text
写入SecondPage.MyLabel.Text
。我可以使用 Page.FindControl 来完成,但这似乎不能替代将前一页转换为 FirstPage 对象并直接引用其上的 MyTextBox 控件。像这样的东西;
有没有办法改变访问修饰符?
c# - 内部抽象类:如何隐藏程序集外的用法?
我有一个公共程序集/项目,它有一个抽象基类,然后是几个我想向其他程序集公开的派生类。
我不希望抽象基类出现在 Intellisense 的这些其他程序集中,所以我想我会成功internal
,但我收到了这个错误:
可访问性不一致:基类“设置”比“IrcSettings”类更难访问......
我真的不明白这一点。我被迫制作抽象Settings
类public
,因此在这个程序集之外可见。
我怎样才能做这门课internal
呢?
c# - C# 与 Java 中的访问修饰符最佳实践
我了解 OOD 中的经验法则是尽可能合理地减少对给定对象的所有成员的访问。
C# 和 Java 似乎都实现了相同的访问修饰符集;然而,让我困惑一段时间的事情是为什么 Java 类似乎大多被声明为公共而 C# 类似乎大多被声明为默认。 这些语言是否有一些微妙之处强加了这些差异,或者仅仅是惯例问题还是什么?
我发现自己经常检查我的 C# 代码(我习惯性地将大多数类公开,除了内部类、匿名类和其他范围狭窄且有用的类)以试图取悦编译器,但是我想知道我是否可能遗漏了什么重要的。
c# - 什么是 C# 中 Java 的 final 等价物?
final
C#中Java的等价物是什么?