在内部访问修饰符的上下文中,C#中的程序集是什么

本文关键字:程序集 是什么 访问 上下文 在内部 | 更新日期: 2023-09-27 18:29:58

我以为汇编是Visual Studio解决方案中的一个项目,但后来我试图理解继承和内部/受保护的访问修饰符,结果迷路了
*Project1Project2是一个解决方案中的独立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中,我没有继承,所以字段field1field2都应该是不可访问的,但根本没有错误。(我将Project1添加到Project2引用中,并将using Project1添加到Project2中)

在内部访问修饰符的上下文中,C#中的程序集是什么

您的解决方案是有效的,因为它包含Visual Studio可以忽略的错误。

您有一个功能齐全的项目Project1,其中包含一个Main()。这是设置为启动项目的项目,因为它不包含错误,所以可以运行。

并非解决方案中的所有项目都必须成功构建才能运行一个项目;只有您要运行的项目所依赖的项目。在这种情况下,没有。

右键单击Project2,单击"设置为启动项目"并尝试构建或运行它:您将看到预期的编译器错误。

Internal是一个访问修饰符,在该修饰符中,类、方法或属性暴露给同样嵌入在同一程序集中的任何类。

但是,声明为内部的类、方法或属性不会暴露给属于其他程序集的类。

相关文章: