首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>NET专区>C#语言>c#访问修饰符介绍及其应用实例
c#访问修饰符介绍及其应用实例
来源: 发布时间:2008-04-08 发布人: 浏览: 人次   字体: [ ]  
今天想整理一下C#访问修饰符,当然对老鸟来说不用介绍了,但是我相信对新人来说一定有必要说一下,
所以在网上查了一下,没有一个完整的介绍,除了概念就是概念,老鸟看了那些文字都要头疼,
所以决定今天整理出来用例子说明来为大家解释一下吧:
首先介绍一下类的修饰符
作为一个顶级类(即不是内部类)只能使用public和internal两种访问修饰符,它们的意义如下。
— public:所修饰的顶级类的可访问域是它所在的程序和任何引用该程序的程序,因此访问不受限制。
— internal:所修饰的顶级类的可访问域是定义它的程序。
public不必介绍哪都可以new一下,但是internal必须在自己的项目内使用,
这里有必要向大家介绍项目和程序集,简单点项目包括:控制台应用程序,Windows应用程序,类库(Class Library)等,而程序集叫Assembly(也就是我们创建项目中的AssemblyInfo.cs文件),
一个项目也就是一个程序集,Assembly用处很大,但与我们的专题无关,不做介绍。
介绍上面的目的为了说明,一个项目的internal无法在另一个项目中调用,代码:

class1:
using System;
using System.Collections.Generic;
using System.Text;

namespace xiaolei
{
    
//public class Class1
    
//{
        
//public int aa;
    
//}

    
internal class Class1
    
{
        
public int aa;
    }


    
class Class11
    
{
        
public void bb()
        
{
            Class1 cc 
= new Class1();
        }

    
    }

}


class2:
using System;
using System.Collections.Generic;
using System.Text;


namespace fanxing
{
    
class Application1
    
{
      
static void Main(string[] args)
        
{
            xiaolei.Class1 aaa 
= new xiaolei.Class1();
            System.Console.Read();
        }

   }


 }
上面我建立了两个项目,一个是类库,一个是控制台,
上面我在控制台class2引入了类库class1,这些操作简略,大家可以看到我上面的class1用了public,
所以在class2成功的得到,大家把把class1修改为internal class1,就可以看到效果了,在class2中无法引出,
但是在class11中可以得到。

很简单,接下来我们介绍方法或者属性的修饰符:
概念性的东西拿来用下:

访问修饰符

   

public

访问不受限制,可以类内和任何类外的代码中访问

protected

可访问域限定于类内或从该类派生的类内

internal

可访问域限定于类所在的程序内

protected internal

protected或者internal,即可访问域限定于类所在的程序或那些由它所属的类派生的类内

private

可访问域限定于它所属的类内


现在做解释首先,public不做介绍,
接下来是protected,
protected就只能被子类内部所访问(不管这个子类在哪个项目里)
如果在同一程序集里面,不是子类的话,仅仅实例化该类,其中的protected所修饰的成员就不能被访问
using System;
using System.Collections.Generic;
using System.Text;


namespace aaa
{
    
public  class Class2
    
{
        
protected int bb;
        
public int cc;
    }


    
public class class22
    

        
protected void  bbb()
        
{
            Class2 bbbb
=new Class2();
            
//只能得到bbbb.cc
        }

    }


    
public class class33:Class2
    
{
        
public void bbb()
        
{
            
//可得到base.bb,base.cc
        }

    }

}


这是在一个项目中,如果再加一个项目
using System;
using System.Collections.Generic;
using System.Text;


namespace fanxing
{
    
class Application1:aaa.Class2
    
{
      
public void  aaa()
        
{
            
//base.bb; base.cc;
        }


      
static void Main(string[] args)
        
{
           aaa.Class2 bbb 
= new aaa.Class2();
          
//bbb.cc;
            System.Console.Read();
        }

   }


 }
一样的道理!

private也很简单,只能在定义的类内部使用,别处不管是派生类等都不能使用。

internal和我们解释的类的修饰符一样,只能在一个项目中使用(不管是实例化还是派生均可见),在别的项目中看不到
using System;
using System.Collections.Generic;
using System.Text;


namespace aaa
{
    
public  class Class2
    
{
        
internal int bb;
        
public int cc;
    }


    
public class class22
    

        
internal void  bbb()
        
{
            Class2 bbbb
=new Class2();
            
//bbbb.bb;bbbb.cc;
        }

    }


    
public class class33:Class2
    
{
        
public void bbb()
        
{
            
//base.bb;base.cc;
        }

    }

}



共2页: 上一页 1 [2] 下一页
相 关 文 章   发布商链接
·C#如何获取文件路径中的文件名?
·c#子线程控制进度条的一个简单例子
·什么是泛型编程思想?及其简单的应用...
·如何使用C#获取IIS服务器版本?
·如何在c#中去掉字符串中的回车符?
·C#如何从文本文件读取信息并使用Arra...
·什么是泛型?泛型的一些概述
·C#对timer类的使用操作代码
·如何在c#中获取事件注册的方法
·如何在C#中插入照片到Excel文档
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·有助快速理解C#委托和事件之...
·C#泛型学习笔记总结
·c#语言从dbf数据库提取数据并
·C#编写控制线程的运行和线程...
·怎样在C#中删除只读文件及其...
·C#函数中返回多个值的两种方...
·如何在C#中插入照片到Excel文
·如何在c#中获取事件注册的方...
·C#对timer类的使用操作代码
·什么是泛型?泛型的一些概述
·C#如何从文本文件读取信息并...
·如何在c#中去掉字符串中的回...
·如何使用C#获取IIS服务器版本...
·什么是泛型编程思想?及其简...
·c#子线程控制进度条的一个简...
热 门 文 章
·c#中收发邮件处理代码(POP3,...
·C#如何获取文件路径中的文件...
·什么是c#深拷贝与浅拷贝及其...
·C#中关于四舍五入函数的讨论...
·c#中的ArrayList属性祥解及其...
·C#语言实现创建、删除和移动...
·快速进行List排序的通用方法...
·C#对timer类的使用操作代码
·String.Split 方法使用及其代...
·如何在c#中去掉字符串中的回...
·用C#编写ActiveX控件代码实例
·C#语言实现从XML文件导出数据...
·C#如何从文本文件读取信息并...
·浅谈接口和抽象类的区别,加...
·c#子线程控制进度条的一个简...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .