在C#语言中,共有五种访问修饰符:public、private、protected、internal、protected internal。作用范围如下表:
访问修饰符 说明
public 公有访问。不受任何限制。
private 私有访问。只限于本类成员访问,子类,实例都不能访问。
protected 保护访问。只限于本类和子类访问,实例不能访问。
internal 内部访问。只限于本项目内访问,其他不能访问。
protected internal 内部保护访问。只限于本项目或是子类访问,其他不能访问
C#成员类型的可修饰及默认修饰符如下表:
成员类型 默认修饰符 可被修饰符
enum public none
class private public、protected、internal、private、
protected internal
interface public none
struct private public、internal、private
下面我就结合实例,讲一下public、private、protected、internal和protected internal的作用范围。
如下代码:
1:  using System;
    2:  using System.Collections.Generic;
    3:  using System.Text;
    4:
       5:  namespace AccessModifier
    6:  {
    7:      public class AccessModifierClass
    8:      {
    9:          public string GetPublicString()
   10:          {
   11:              return "Public String";
   12:          }
   13:
      14:          protected string GetProtectedString()
   15:          {
   16:              return "Protected String";
   17:          }
   18:
      19:          private string GetPrivateString()
   20:          {
   21:              return "Private String";
   22:          }
   23:
      24:          internal string GetInternalString()
   25:          {
   26:              return "Internal String";
   27:          }
   28:
      29:
           protected internal string GetProtectedInternalString()
   30:          {
   31:              return "Protected Internal String";
   32:          }
   33:
      34:          void AvailableAccessModifier()
   35:          {
   36:              this.GetPublicString();
   37:              this.GetPrivateString();
   38:              this.GetInternalString();
   39:              this.GetProtectedInternalString();
   40:              this.GetProtectedString();
   41:          }
   42:      }
   43:
      44:
       public class TestAccessModifierClass1
   45:      {
   46:          void AvailableAccessModifier()
   47:          {
   48:              AccessModifierClass item = new AccessModifierClass();
   49:              item.GetPublicString();
   50:              item.GetInternalString();
   51:              item.GetProtectedInternalString();
   52:          }
   53:      }
   54:
      55:      public class TestAccessModifierClass2 : AccessModifierClass
   56:      {
   57:          void AvailableAccessModifier()
   58:          {
   59:              AccessModifierClass item = new AccessModifierClass();
   60:              item.GetPublicString();
   61:              item.GetInternalString();
   62:              item.GetProtectedInternalString();
   63:              base.GetProtectedString();
   64:          }
   65:      }
   66:  }AccessModifierClass是我们的访问修饰符类,里面有五种访问修饰符方法,可见在AccessModifierClass类里面的AvailableAccessModifier()方法可以访问所有的方法。
在TestAccessModifierClass1类中的AvailableAccessModifier()方法只能访问public、Internal和Protected Internal方法。
TestAccessModifierClass2类继承自AccessModifierClass类,所以它的AvailableAccessModifier()方法可以访问public,internal,protected和protected internal方法。

C#中public、private、protected、internal、protected internal (转载)的更多相关文章

  1. Java中public,private,protected,和默认的区别

    Java中public,private,protected,和默认的区别 1.private修饰词,表示成员是私有的,只有自身可以访问: 2.protected,表示受保护权限,体现在继承,即子类可以 ...

  2. php class中public,private,protected的区别,以及实例

    一,public,private,protected的区别 public:权限是最大的,可以内部调用,实例调用等. protected: 受保护类型,用于本类和继承类调用. private: 私有类型 ...

  3. PHP中public,private,protected,abstract等关键字用法详解

    PHP中常用的关键字 在PHP中包含了很多对函数和类进行限制的关键字,常用的通常有abstract,final,interface,public,protected,private,static等等, ...

  4. java中public private protected default的区别

    1.public:public表明该数据成员.成员函数是对所有用户开放的,所有用户都可以直接进行调用 2.private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直 ...

  5. php 中 public private protected的区别

    public 子类,外部都可调用. protected 子类可以调用,外部不可以调用. private 子类不可以调用,外部不可以调用. <?php class AA { public func ...

  6. 关于c++中public & private方法调用问题

    class IDNoIdentifier { public: IDNoIdentifier(); ~IDNoIdentifier(); typedef vector<cv::Rect> C ...

  7. cmake target_link_libraries() 中<PUBLIC|PRIVATE|INTERFACE> 的区别

    如果目标的头文件中包含了依赖的头文件(源文件间接包含),那么这里就是PUBLIC 如果目标仅源文件中包含了依赖的头文件,那么这里就是PRIVATE 如果目标的头文件包含依赖,但源文件未包含,那么这里就 ...

  8. 【转载】C++中public,protected,private访问

    第一:private, public, protected 访问标号的访问范围. 假如我们约定: 类内部-----指的是当前类类型的定义中,以及其成员函数的声明和定义中: 类外部-----指的是不在当 ...

  9. C++中public、protected、private

    C++中public.protected.private 第一:private, public, protected 访问标号的访问范围. private:只能由  1.该类中的函数. 2.其友元函数 ...

  10. [c++] C++中public、protected、private的区别

    转:https://blog.csdn.net/vanturman/article/details/79393317 第一: private,public,protected的访问范围: privat ...

随机推荐

  1. hdu 2031

    水题 AC代码: #include<iostream> using namespace std; int main() { int i,j,b[1000],k; while(cin> ...

  2. HttpWebRequest多线程抓取17Track的物流信息

    公司的一个系统需要去抓17Track的物流信息,贴上代码有需要的朋友可以参考一下↓ //17Track的抓取地址以及开启的线程数量 <add key="url" value= ...

  3. notification:object not locked by thread before notify()

    今天写notification练习时,误将NotificationManager.notify(0, notification);写成notification.notify(); 代码如下 publi ...

  4. DataTable 对象 转换为Json 字符串

    /// <summary> /// DataTable 对象 转换为Json 字符串 /// </summary> /// <param name="dt&qu ...

  5. 利用csc.exe 手动编译C#程序

    1. 创建见 cs代码文件 using System; class TestApp{ static void Main() { Console.WriteLine("Test! 1,2,3& ...

  6. ubuntu -server 忘记root 密码方法

    允许 su 到 root 非常简单,只需要重新设置下密码即可.下面是设置的方法: 1 me@ubuntu:~$ sudo passwd 2 密码:<--- 输入安装时那个用户的密码3 输入新的 ...

  7. C语言初学 求100到200的全部素数

    #include<stdio.h> #include<math.h> int main() { int m,i,k; for(m=101;m<=200;m=m+2) { ...

  8. Git学习笔记01--初始化设置

    1.查看git版本 $ git --version 2.设置用户姓名和邮箱 $ git config --global user.name “Craftor” $ git config --globa ...

  9. MySQL flush tables with read lock

    mysql> flush tables with read lock; flush tables with read lock 会去关闭已经打开的所有文件,它要做这个操作就先要拿到锁:当发起这个 ...

  10. ubuntu 下GIT的安装

    linux下软件的安装方式有多种,最简单的莫过于从软件中心直接安装了或者用命令行直接安装 sudo apt-get install git 但是这样的安装却使我们体会不到最新版本的功能,如果我们想要体 ...