社区
C#
帖子详情
C#中internal关键字有什么用?弄个实例过来看看,谢谢。
Jave.Lin
2009-06-08 04:24:06
如题。
...全文
459
21
打赏
收藏
C#中internal关键字有什么用?弄个实例过来看看,谢谢。
如题。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
virusswb
2010-02-26
打赏
举报
回复
一个程序集就是一个dll文件
jinlingoo1
2009-06-12
打赏
举报
回复
同一程序集(Assembly),可访问
Jave.Lin
2009-06-12
打赏
举报
回复
说错了。
不是10楼的朋友,是14楼的。14楼的朋友说的和MSDN的差不多。
差点就给错分了。
Jave.Lin
2009-06-12
打赏
举报
回复
看下面的MSDN解说。
总得来说和10楼的朋友说的差不多。
internal(C# 参考)
internal 关键字是类型和类型成员的访问修饰符。只有在同一程序集的文件中,内部类型或成员才是可访问的,如下例所示:
public class BaseClass
{
// Only accessible within the same assembly
internal static int x = 0;
}
有关 internal 与其他访问修饰符的比较,请参见可访问性级别和访问修饰符(C# 编程指南)。
有关程序集的更多信息,请参见程序集和全局程序集缓存(C# 编程指南):
内部访问通常用于基于组件的开发,因为它使一组组件能够以私有方式进行合作,而不必向应用程序代码的其余部分公开。例如,用于生成图形用户界面的框架可以提供“控件”类和“窗体”类,这些类通过使用具有内部访问能力的成员进行合作。由于这些成员是内部的,它们不向正在使用框架的代码公开。
从定义具有内部访问能力的类型或成员的程序集外部引用该类型或成员是错误的。注意
尽管不能用 C# 重写 internalvirtual 方法,但可以用某些语言(如使用 Ilasm.exe 的文本 Microsoft 中间语言 (MSIL))重写它。
示例
该示例包含两个文件:Assembly1.cs 和 Assembly2.cs。第一个文件包含内部基类 BaseClass。在第二个文件中,实例化 BaseClass 的尝试将产生错误。
// Assembly1.cs
// compile with: /target:library
internal class BaseClass
{
public static int intM = 0;
}
// Assembly1_a.cs
// compile with: /reference:Assembly1.dll
class TestAccess
{
static void Main()
{
BaseClass myBase = new BaseClass(); // CS0122
}
}
在此示例中,使用与示例 1 中所用的文件相同的文件,并将 BaseClass 的可访问性级别更改为 public。还将成员 IntM 的可访问性级别更改为 internal。在此例中,您可以实例化类,但不能访问内部成员。
// Assembly2.cs
// compile with: /target:library
public class BaseClass
{
internal static int intM = 0;
}
// Assembly2_a.cs
// compile with: /reference:Assembly1.dll
public class TestAccess
{
static void Main()
{
BaseClass myBase = new BaseClass(); // Ok.
BaseClass.intM = 444; // CS0117
}
}
yudi010
2009-06-11
打赏
举报
回复
同一命名空间
rabbitlzx
2009-06-11
打赏
举报
回复
[Quote=引用 14 楼 vrhero 的回复:]
引用 10 楼 evaa006 的回复:
同一程序集也就是同一命名空间吧,个人认为,有待大家讨论
同一程序集中可以使用多个命名空间,同样的同一命名空间可以存在于多个程序集中...
程序集是物理边界,命名空间是逻辑边界...要分清楚...
[/Quote]
up
Jave.Lin
2009-06-11
打赏
举报
回复
谢谢大家回答。
我现在又有问题。
那啥又叫程序集呢?
vrhero
2009-06-08
打赏
举报
回复
[Quote=引用 10 楼 evaa006 的回复:]
同一程序集也就是同一命名空间吧,个人认为,有待大家讨论
[/Quote]
同一程序集中可以使用多个命名空间,同样的同一命名空间可以存在于多个程序集中...
程序集是物理边界,命名空间是逻辑边界...要分清楚...
Dobzhansky
2009-06-08
打赏
举报
回复
如果程序集上有属性:
// 可以写在 AssemblyInfo.cs 中啊
[assembly: InternalsVisibleTo("assembly.file")]
那么, 本程序集中的 internal 也可以被程序集 assembly.file.dll ( or assembly.file.exe) 中的类访问.
90天内只能改一次
2009-06-08
打赏
举报
回复
都被别人讲完了
我就讲个通俗点的,就是同一个dll或者exe中的。
注意不是同一命名空间,不要被误导。
我不同程序集同样可以定义相同命名空间。
oec2003
2009-06-08
打赏
举报
回复
同一程序集可以访问
类不过不写访问修饰符 默认就是internal
evaa006
2009-06-08
打赏
举报
回复
同一程序集也就是同一命名空间吧,个人认为,有待大家讨论
evaa006
2009-06-08
打赏
举报
回复
[Quote=引用 8 楼 windstore 的回复:]
引用 4 楼 vrhero 的回复:
错误,是同一程序集(Assembly)...去看MSDN吧...
正解。。。
[/Quote]
应该是一样的吧!
windstore
2009-06-08
打赏
举报
回复
[Quote=引用 4 楼 vrhero 的回复:]
错误,是同一程序集(Assembly)...去看MSDN吧...
[/Quote]
正解。。。
zenowolf
2009-06-08
打赏
举报
回复
相同程序级可以访问~
feiyun0112
2009-06-08
打赏
举报
回复
http://msdn.microsoft.com/zh-cn/library/7c5ka91b.aspx
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)
http://feiyun0112.cnblogs.com/
vrhero
2009-06-08
打赏
举报
回复
[Quote=引用 2 楼 evaa006 的回复:]
同一命名空间可以访问
[/Quote]
错误,是同一程序集(Assembly)...去看MSDN吧...
wxm3630478
2009-06-08
打赏
举报
回复
protected internal ??
evaa006
2009-06-08
打赏
举报
回复
internal 关键字是类型和类型成员的访问修饰符,内部成员只有在同一程序集中的文件内才是可访问的
internal 可访问域限定于类所在的程序内
evaa006
2009-06-08
打赏
举报
回复
同一命名空间可以访问
加载更多回复(1)
你必须知道的
C#
的25个基础概念(附源码)
先自己复习一下,
看看
下面的
C#
问题都能回答上来么? 1.静态变量和非静态变量的区别? 2.const 和 static readonly 区别? 3.extern 是什么意思? 4.abstract 是什么意思? 5.
internal
修饰符起什么作用? 6.sealed 修饰符是干什么的? 7.override 和 overload 的区别? 8.什么是索引指示器? 9.new 修饰符是起什么作用? 10.this
关键字
的含义? 11.可以使用抽象函数重写基类
中
的虚函数吗? 12.密封类可以有虚函数吗? 13.如果基类
中
的虚属性只有一个属性访问器,那么继承类重写该属性后可以有几个属性访问器?如果基类
中
有 get 和 set 两个呢? 14.abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗? 15.接口可以包含哪些成员? 16.类和结构的区别? 17.接口的多继承会带来哪些问题? 18.抽象类和接口的区别? 19.别名指示符是什么? 20.如何释放非托管资源? 21.P/Invoke是什么? 22.StringBuilder 和 String 的区别? 23.explicit 和 implicit 的含义? 24.params 有什么用? 25.什么是反射? 以下是我做的一份参考答案(
C#
语言范畴之内),如果有不准确、不全面的,欢迎各位朋友指正! 1.静态变量和非静态变量的区别?答:静态变量:静态变量使用 static 修饰符进行声明在所属类被装载时创建通过类进行访问所属类的所有
实例
的同一静态变量都是同一个值非静态变量:不带有 static 修饰符声明的变量称做非静态变量在类被
实例
化时创建通过对象进行访问同一个类的不同
实例
的同一非静态变量可以是不同的值示例:
C#
面试题,
C#
面试经典题
C#
面试题,
C#
面试经典题
C#
面试题,
C#
面试经典题
C#
面试题,
C#
面试经典题
C#
面试题,
C#
面试经典题
常用
C#
关键字
详解教程(比较全面)
学习
C#
很久了,但可能你也和我一样,总有那么一两个关键词,说不清楚它是什么意思,有什么用,那么这篇文章就带你一一讲解。
一周学会
C#
java程序员转.NET必看
java程序员转.NET必看,对于JAVA程序员转做.NET非常有帮助。
C#
程序员面试问题及答案
C#
程序员面试问题及答案,
C#
程序员的帮助
C#
111,117
社区成员
642,552
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章