`
yangshen998
  • 浏览: 1248009 次
文章分类
社区版块
存档分类
最新评论

protected,internal和protected internal

 
阅读更多

我03年开始搞C#,搞了好多年了,楞是没搞出什么名堂。其中是有原因的,水平太烂。
好比面向对象里非常基本的protected可访问级别,一直都没搞清楚。
我记忆中,好像在哪读过,基类中的protected,在子类中会变成private,所以只能被儿子访问,孙子就不行了。但事实上,protected不管在基类还是子类,永远都是protected。
另外,internal这个访问级别原本不知道有什么用,现在有点明白了。它的作用是只能在本程序集里才是可访问的。比如,你写了个公用类库,编译成一个独立的DLL被其他程序调用,这时候,internal可以保证有些东西只能在这个公用类库才能访问,那些调用程序即使继承了里面的类,也无法访问这些东西。
C#里protected还可以与internal结合:protected internal,只能在本程序集中,由本类或继承类访问。

==================================

我又发现一种现象

属性里边,访问器get和set如果成对出现,则它们其中一个(仅一个)可以设置访问修饰符,并且这个访问限制应该比属性的更为严格。例如

public
 string
 Name
{
get
{
return name;
}
protected set
{
name = value;
}
}

这个当然是有用的,通常我们都希望SET有更严格的限制。

对于 protected 这个东东,属性和方法的访问级别似乎也有区别。比如,基类中有:
class Base
{
protected int Property{get;}
protected int Method();
}
它们都是protected,子类中访问当然没有问题
class Son : Base
{
void Test()
{
int i = Property;
Method();
}
}

但如果象这样




分享到:
评论

相关推荐

    C# 修饰符:private protected internal public

    文档中通过代码、图片详细的描述了C#五大修饰符的区别。我整理了挺久,希望对大家有用。

    asp.net 修饰符介绍(关于public、private、protected、internal)

    主要介绍了asp.net 修饰符介绍、关于public、private、protected、internal,需要的朋友可以参考下

    C#实现线程池的简单示例

    本文以实例演示了C#线程池的简单实现方法。程序中定义了一个对象类,用以包装参数,实现多个参数的传递。成员属性包括两个输入参数和一个输出参数。代码简单易懂,备有注释便于理解... protected internal String outv

    ORM及代码生成器和插件C#源码(DBFrameworkV4.5.3)

    protected internal virtual void RetrieveBySql(string sql); public void ShadowCopyTo(object targetEntity); public void ShadowCopyTo(T targetEntity); protected static double Sum(string columnName); ...

    ORM及代码生成器C#源码(最新版V4.5.8.5、非常适于ASP.NET MVC)

    protected internal virtual void RetrieveBySql(string sql); public void ShadowCopyTo(object targetEntity); public void ShadowCopyTo(T targetEntity); protected static double Sum(string columnName); ...

    ORM及代码生成器C#源码(2012最新版Kenly.DBFramework4.6.5.5)

    protected internal virtual void RetrieveBySql(string sql); public void ShadowCopyTo(object targetEntity); public void ShadowCopyTo(T targetEntity); protected static double Sum(string columnName); ...

    idtsc:内部 .d.ts 清理。 将标有 `@internal` 的类属性变为私有

    有internal修饰符(除了 public/protected/private),但它似乎没有任何进展。 自由许可证: 通过 NPM 安装 在您的项目中将其安装为 dev-dependency: npm i -D idtsc 添加jsdoc 要将您的属性、方法和类标记为...

    ASP.NET面试题大全新

    protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 internal: 在同一命名空间内可以访问。 2 .列举ASP.NET 页面之间传递值的几种方式。 答. 1.使用QueryString,...

    ASP.NET经典60道面试题

    protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 internal: 在同一命名空间内可以访问。 2 .列举ASP.NET 页面之间传递值的几种方式。 答. 1.使用QueryString, 如...

    公司使用的Net笔试题及答案

    protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 internal: 在同一命名空间内可以访问。 2 .列举ASP.NET 页面之间传递值的几种方式。 答:1.使用...

    net 面试题集锦.doc

    protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 internal: 在同一命名空间内可以访问。 2 .列举ASP.NET 页面之间传递值的几种方式。 答. 1.使用QueryString,...

    as3.0访问控制符

    AS3.0中访问控制符:public、private、protected和internal的区别

    .net面试题

    protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 internal: 在同一命名空间内可以访问。 2 .列举ASP.NET 页面之间传递值的几种方式。 答. 1.使用...

    经典ASP.NET面试题

    protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 internal: 在同一命名空间内可以访问。 2 .列举ASP.NET 页面之间传递值的几种方式。 答. 1.使用QueryString, ...

    精心搜集来的c#面试题

    protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 internal: 在同一命名空间内可以访问。 2 .列举ASP.NET 页面之间传递值的几种方式。 答. 1.使用QueryString, ...

    c#学习笔记——学习心得

    类修饰符:new在类声明时使用,public公共的,访问不受限,protected只能从其所在类和所在类的子类中进行访问,internal只有其所在类才能进行访问,private私有的,abstract抽象类,不能实例化,sealed密封类,不能...

    访问修饰符(C# 编程指南)

    public 同一程序集中的任何其他代码或引用该程序集的其他...protected internal 同一程序集中的任何代码或其他程序集中的任何派生类都可以访问该类型或成员。 http://msdn.microsoft.com/zh-cn/library/ms173121.aspx

    C#的面试题

    protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 internal: 在同一命名空间内可以访问。 <br>2 .列举ASP.NET 页面之间传递值的几种方式。 ...

    C# 的关键字详细介绍

    用于修饰类,方法,属性和字段的关键字: 首先从最简单的private,protected,internal,public 解释。 public 和internal 修饰类。 public,protected,private 修饰方法。 修饰类的时候: public 代表公开,也就是所有...

Global site tag (gtag.js) - Google Analytics