2010-09-07 12 views

回答

4

是的,它是一样的。内部在同一个装配体内是公共的,所以如果你只有一个装配体,那就没有区别了。

11

是的,当其他人引用你的装配体时,差别就会出现。在这种情况下,只有public会员将可见。但别忘了,internal/private成员仍然可以通过反射/动态进行访问。此外,它将不再使用BindingFlags.Public进行标记,而是使用BindingFlags.NonPublic代替。

1

从与它宣布它是相同的大会。

3

很多人都说是,但答案确实不是。

如果有人引用你的程序集,那么就有很大的区别!

1

是的,基本上就是内部意味着类只能在你的程序集中使用,它的工作方式与程序集中的公共相同。
但是,如果您认为您的程序集将被任何项目使用,则最好在可引用的类上使用public。

此外,如果你声明一个类作为内部,并在公共内部的一些方法,内部将覆盖其可访问性,使其内部。

2

一般来说,是的。

在极少数情况下,可能存在差异,特别是在反射特定的环境中。例如,如果类型具有公共无参数构造函数,则Activator.CreateInstance(typeof(myType))将成功,但如果该类型只具有内部类型(至少在.NET 3.5上),则该类型将不会成功 - 您必须使用nonpublic = = true调用超载。

另外,请注意,接口实现总是公开的。因此,编辑器中的全部替换 - >“公共” - “内部”可能会产生无法编译的代码 - 编译器将拒绝让您以内部可见性实现接口的成员。

相关问题