我认为汇编是Visual Studio中解决方案的一个项目,但后来我试图理解继承和内部/受保护的访问修饰符,我迷路了。
* Project1
和Project2
在一个解决方案中是独立的VS项目:
namespace Project1
{
public class C1
{
internal int field1;
internal protected int field2;
}
}
namespace Project2
{
public class C2
{
public static void f(C1 c1)
{
c1.field1 = 1; //no problems here
c1.field2 = 2; //neither here
}
}
}
在Project2
我没有继承权,因此字段field1
和field2
都应该无法访问,但根本没有错误。 (我将Project1添加到Project2参考中,并在using Project1
)
Project2
答案 0 :(得分:1)
您的解决方案有效,因为它包含Visual Studio可以忽略的错误。
您有一个功能齐全的项目Project1,其中包含Main()
。这是设置为启动项目的项目,可以运行,因为它不包含任何错误。
并非您的解决方案中的所有项目都必须成功构建才能运行一个项目;只是您要运行的项目所依赖的项目。在这种情况下没有。
右键单击Project2,单击"设置为StartUp Project"并尝试构建或运行它:您将看到您期望的编译器错误。
答案 1 :(得分:0)
Internal是一个访问修饰符,其中类,方法或属性公开给同样嵌入在同一程序集中的任何类。
但是,声明为internal的类,方法或属性不会暴露给属于其他程序集的类。