回答
为一个类型的默认可访问性为internal
,但该类型的成员默认的无障碍环境取决于类型。
一般而言,类的成员是private
默认,其中作为结构的成员是public
默认。这因语言而异; C++的默认结构访问修饰符是公共的,而C#则是私有的。
你们是否确定这会倒退?如果我在C#类中放置一个没有访问修饰符的方法,C#3.0编译器会将它构建为一个私有方法。 – 2010-05-26 23:19:43
Steve是正确的。类方法的默认可访问性是'private'。自己尝试一下。 – 2010-05-26 23:28:39
这个答案是正确的。刚刚在VS2010中进行了验证,因为我原本以为这是错误的。 – Donnie 2010-05-26 23:33:18
对于一个类:如果未指定访问修饰符,那么Internal是默认值。
对于方法:如果未指定访问修饰符,则Private是默认值。
是的,internal
是类的默认值,但private
是成员的默认值。
假设这是一个C#方法,因为您有“.net”标记。
人们需要区分“成员”可访问性和“类”可访问性。
- C#中类成员(包括方法)的默认可访问性是私有的。请参阅https://msdn.microsoft.com/en-us/library/ba0a1yw2(v=vs.140).aspx
- 类本身的默认可访问性是内部的。
从C#编程语言,第三版由安德斯·海尔斯伯格等,部分10.3.5( “类会员 - 访问修饰符”)434页:
一个类成员声明可以具有五种可能的声明可访问性(§3.5.1)中的任何一种:
public
,protected internal
,protected
,internal
或private
。除protected internal
组合外,指定多个访问修饰符时发生编译时错误。 当类成员声明不包含任何访问修饰符时,假定为private
。然后在部分11.2(“结构成员”)第539页上 [着重矿]
和:
除了在§11.3指出的不同,类成员的描述中10.3节提供通过§10.14也适用于结构成员。
11.3节没有提及访问修饰符什么,所以我的这个读数意味着一个struct
的成员没有访问修饰符也private
默认。这符合what MSDN says和我自己的经验。
哦,等等,还有一件事....
interface
方法声明顾名思义当然public
的。所以下面的实现是public
,没有明确的访问修饰符。
public class MyClass : IEqualityComparer<MyClass>
bool IEqualityComparer<MyClass>.Equals(MyClass x , MyClass y) {}
}
类方法是私有的,默认情况下在.NET中是封闭的。 这意味着该方法仅在类中可见,不能被继承类重写。
- 1. 如何找到没有显式访问修饰符的方法?
- 2. 检查方法的访问修饰符
- 3. 动态方法访问修饰符
- 4. 方法有可能有双重访问修饰符吗?
- 5. 有没有办法访问另一个没有public修饰符的包?
- 6. Delphi访问修饰符
- 7. 内部访问修饰符
- 8. 库级访问修饰符
- 9. EventInfo访问修饰符
- 10. 动态访问修饰符
- 11. 练习访问修饰符
- 12. 类访问修饰符
- 13. 保护访问修饰符
- 14. 通过访问修饰符
- 15. 包访问(protected修饰符)
- 16. java中有没有对静态块的访问修饰符
- 17. 有条件访问修饰符?
- 18. 这种访问修饰符的方法的目的是什么?
- 19. 更改GridView的CreateRow方法的访问修饰符
- 20. 访问说明符和访问修饰符有什么区别?
- 21. 更改访问修饰符的解决方法
- 22. C#Main()方法的默认访问修饰符
- 23. Java 9中接口方法的默认访问修饰符?
- 24. 为什么Java限制隐藏方法的访问修饰符
- 25. Java访问修饰符 - 可用于子类和包的方法
- 26. 在C中使用元组的方法访问修饰符#
- 27. 将访问修饰符添加到使用Roslyn CodeFixProvider的方法?
- 28. Java访问修饰符:无修饰符与“默认”
- 29. 访问修饰符C# - 内部修饰符
- 30. 属性访问修饰符;为什么以下工作没有?
在哪种语言? – 2010-05-26 23:14:46
@steve抱歉,已添加c#标记。 – 2010-05-26 23:17:07