如题。
解决方案 »
- c#.net 使用循环能实现给好多个TextBox赋值吗?
- CheckedListBox 将处于选中状态的都置为高亮显示,怎样实现 谢谢
- ★★★★一个截取字符串问题★★★★
- 怎样在winform中的textbox里显示sql2000表中的一条记录中的一个字段?在线等待...
- 我该选择哪个公司啊?请大家帮我分析一下,谢谢了
- 用C#如何检测系统是否安装了打印机?
- c# webBrowser控件的问题
- 关于Global.asax的数据库链接设置
- 动态生成的控件会被rectangleShape覆盖,什么原因?
- 端口打不开 或 无法将类型“uint”隐式转换为“int”
- 两个日期相减 得到 月数 和 畸零天数
- 应用程序开启时,弹出窗口“遇到问题需要关闭 我们对此引起的不便表示抱歉”
internal 可访问域限定于类所在的程序内
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/
我就讲个通俗点的,就是同一个dll或者exe中的。
注意不是同一命名空间,不要被误导。
我不同程序集同样可以定义相同命名空间。
// 可以写在 AssemblyInfo.cs 中啊
[assembly: InternalsVisibleTo("assembly.file")]那么, 本程序集中的 internal 也可以被程序集 assembly.file.dll ( or assembly.file.exe) 中的类访问.
总得来说和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
}
}