在内部访问修饰符的上下文中,C#中的程序集是什么
本文关键字:程序集 是什么 访问 上下文 在内部 | 更新日期: 2023-09-27 18:29:58
我以为汇编是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
中)
您的解决方案是有效的,因为它包含Visual Studio可以忽略的错误。
您有一个功能齐全的项目Project1,其中包含一个Main()
。这是设置为启动项目的项目,因为它不包含错误,所以可以运行。
并非解决方案中的所有项目都必须成功构建才能运行一个项目;只有您要运行的项目所依赖的项目。在这种情况下,没有。
右键单击Project2,单击"设置为启动项目"并尝试构建或运行它:您将看到预期的编译器错误。
Internal是一个访问修饰符,在该修饰符中,类、方法或属性暴露给同样嵌入在同一程序集中的任何类。
但是,声明为内部的类、方法或属性不会暴露给属于其他程序集的类。