c#中的内部类和公共类有什么区别?

c#中的内部类和公共类有什么区别?,c#,.net,C#,.net,下面的类声明是什么意思 internal class A { } public class B { } 我可以在另一个程序集中的另一个类中使用具有类A和B的程序集的引用来访问这两个类。内部访问说明符和公共访问说明符在类方面有什么区别?内部意味着只有同一程序集中的其他类才能访问它。Public表示它可用于所有其他类。internal表示它仅可用于同一程序集中的其他类。Public表示它对所有其他类都可用。Internal仅在它所在的程序集中可用 公共可用于引用其所在程序集的任何程序集 如果可以

下面的类声明是什么意思

internal class A { }

public class B { }

我可以在另一个程序集中的另一个类中使用具有类A和B的程序集的引用来访问这两个类。内部访问说明符和公共访问说明符在类方面有什么区别?

内部意味着只有同一程序集中的其他类才能访问它。Public表示它可用于所有其他类。

internal表示它仅可用于同一程序集中的其他类。Public表示它对所有其他类都可用。

Internal仅在它所在的程序集中可用

公共可用于引用其所在程序集的任何程序集


如果可以从另一个程序集访问内部类,则可能设置了“InternalsVisibleTo”,或者没有引用您认为是的类。

internal仅在其所在的程序集中可用

公共可用于引用其所在程序集的任何程序集


如果您可以从另一个程序集访问内部类,您可能设置了“InternalsVisibleTo”,或者您没有引用您认为是的类。

您不应该能够从另一个程序集访问类A。@Blorgbeard,除非他使用
InternalsVisibleToAttribute
是,但你可能认为他会在问题中提到这一点——这不是你可以错误地做的事情……也许这是一个已经建立的项目,并且没有意识到它已经到位。我并不反对你的观点,只是指出了一个小小的警告:)@Aditya Shukla正如Lukazoid所说的,你不应该能够从另一个程序集访问
internal
class a,除非你使用
internalsvisible为该程序集指定
。可能您误解了程序集的定义?您不应该从另一个程序集访问类A。@Blorgbeard,除非他使用
内部visibleToAttribute
是,但你可能认为他会在问题中提到这一点——这不是你可以错误地做的事情……也许这是一个已经建立的项目,并且没有意识到它已经到位。我并不反对你的观点,只是指出了一个小小的警告:)@Aditya Shukla正如Lukazoid所说的,你不应该能够从另一个程序集访问
internal
class a,除非你使用
internalsvisible为该程序集指定
。也许您误解了程序集的定义?如何将InternalsVisibleTo更改为?@AdityaShukla-在
AssemblyInfo.cs
文件中,您可以将
[assembly:InternalsVisibleTo(“AssemblyB”)]
放入其中,以使内部类、方法等可供
AssemblyB
使用。这通常用于测试目的。如何将InternalsVisibleTo更改为?@AdityaShukla-在
AssemblyInfo.cs
文件中,您可以将
[assembly:InternalsVisibleTo(“AssemblyB”)]
放入其中,以使内部类、方法等可供
AssemblyB
使用。这通常用于测试目的。