public和internal有什么区别?

xuerueheng 2019-09-06 06:22:25
我学的时候是说public修饰的是可以在命名空间外(项目外)访问到,而internal只能在命名空间内(项目内)被访问到,但我实际试了一下,我发现我都能在命名空间(项目)访问到,搞不懂这是怎么回事,有大佬能给我讲一下吗?
代码1:这个是我用命名空间名点出来的

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//using 五种访问修饰符和静态;
namespace 五种访问修饰符和静态
{
internal enum xb
{
男,

}
public enum xingbie
{
男,

}

internal class Program
{
static void Main(string[] args)
{
}
}
}
namespace 实验
{
class shiyan
{
//xb a0;
//xingbie a1;
五种访问修饰符和静态.xb a2;
五种访问修饰符和静态.xingbie a3;
五种访问修饰符和静态.Program a4;
}
}

代码2:这是我引入了命名空间之后调用的

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using 五种访问修饰符和静态;
namespace 五种访问修饰符和静态
{
internal enum xb
{
男,

}
public enum xingbie
{
男,

}

internal class Program
{
static void Main(string[] args)
{
}
}
}
namespace 实验
{
class shiyan
{
xb a0;
xingbie a1;
//五种访问修饰符和静态.xb a2;
//五种访问修饰符和静态.xingbie a3;
//五种访问修饰符和静态.Program a4;
}
}
...全文
1011 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
大鱼> 2019-09-08
  • 打赏
  • 举报
回复
右键,新建项目,用internal只能在这个项目使用;你再新建个项目,在这个新建的项目中引用上一个项目的某些方法和变量,这些方法与变量就是public,不过我很少使用internal,用public,private,protected就够了。
xuerueheng 2019-09-08
  • 打赏
  • 举报
回复
引用 8 楼 wangmoxhn 的回复:
一个项目就是一个程序集,这个项目可以是dll也可以是exe

那大佬这个就是项目吧

我这样就可以使用另一个项目内的类了吧
amnoone 2019-09-08
  • 打赏
  • 举报
回复
不错 不错 学习了
wangmoxhn 2019-09-08
  • 打赏
  • 举报
回复
一个项目就是一个程序集,这个项目可以是dll也可以是exe
xuerueheng 2019-09-08
  • 打赏
  • 举报
回复
引用 6 楼 wangmoxhn 的回复:
是程序集内可以访问。
举个例子,一个程序集就是一个村子。你家房子就是一个命名空间。你家桌子就是一个类。 如果你家桌子是public的,则所有人都能来看你家桌子,包括外村的。如果是internal则只能本村人能看。

那大佬我什么时候能接触到程序集呢?我发现我现在都不知道什么是程序集?
wangmoxhn 2019-09-08
  • 打赏
  • 举报
回复 1
是程序集内可以访问。 举个例子,一个程序集就是一个村子。你家房子就是一个命名空间。你家桌子就是一个类。 如果你家桌子是public的,则所有人都能来看你家桌子,包括外村的。如果是internal则只能本村人能看。
xuerueheng 2019-09-07
  • 打赏
  • 举报
回复
引用 3 楼 LvBao_117 的回复:
一个namespace对应一个项目。internal可以在同一个命名空间下使用

那我哪个实验的命名空间怎么也能调用internal修饰的成员呢?
LvBao_117 2019-09-07
  • 打赏
  • 举报
回复
一个namespace对应一个项目。internal可以在同一个命名空间下使用
threenewbee 2019-09-07
  • 打赏
  • 举报
回复
引用 4 楼 xuerueheng 的回复:
[quote=引用 3 楼 LvBao_117 的回复:] 一个namespace对应一个项目。internal可以在同一个命名空间下使用
那我哪个实验的命名空间怎么也能调用internal修饰的成员呢?[/quote] 是跨程序集,和命名空间无关。
xuerueheng 2019-09-06
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
internal只能在项目内访问,跨dll/exe不能访问

大佬什么是dll和exe啊?文件吗?还有我上面的不在同一命名空间下的两个类不算两个项目吗,只有在从新添加一个控制台程序才算两个项目吗?
那如果是这样的话,我为什么引入不了命名空间呢?引入不了命名空间我怎么使用public修饰过的成员呢?
threenewbee 2019-09-06
  • 打赏
  • 举报
回复
internal只能在项目内访问,跨dll/exe不能访问

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧