大家都知道,一个类的私有成员只能在他的内部访问!

但是不知道大家注意到没有,实际上在C#中一个类的实例是可以访问同一个类的另外一个实例的私有成员的。

请看这段简单的代码

public class MyClass
    {
        private int i = 0;
        
        public void Function()
        {
            MyClass a = new MyClass();
            Console.WriteLine( a.i);  //这里成功访问了另外的一个实例a的私有实例字段

}

}

大家也可以自己写一段类似的代码来测试一下,的确是可以访问另外一个实例的私有成员!

为什么呢?因为C#就是一开始就是这样设计的。实际上这个设计在某种程度上破坏了对象的封装性,其他的面向对象的语言可能就没有做这样的设计了。

希望大家可以注意到这个问题,为了保证对象良好的封装性,最好不要这样访问啊!

转载于:https://www.cnblogs.com/xuefeng1982/archive/2009/02/18/1393166.html

谈谈C#的私有成员的一个有趣的现象!相关推荐

  1. firebug的一个有趣现象

    firebug的一个有趣现象 var obj = {length:0,splice:function(){}}console.log(obj) 猜猜上面会打印出啥? 没错,打印出来的看起来是一个空数组 ...

  2. 发现魔方阵的一个有趣现象

    昨天机器上装了一个MatLab 6.5,无意中发现一个有趣的现象: n阶魔方阵的行列式值等于零.条件是(n mode 2 = 0 and n > 2); 我做了验证如下: >> A= ...

  3. java 单元测试 私有成员变量,单元测试时测试一个private私有方法 - - ITeye博客

    直接上例子 待测试的类 [code="java"]public class Calculator { private int count = 0; private int add( ...

  4. python设计一个date类数据成员有年月日_设计一个日期类Date,包括年、月、日等私有成员。要求实现日期的基本运算,例如某日期加上天数或减去天数...

    /*设计一个日期类Date,包括年.月.日等私有成员.要求实现日期的基本运算,例如某日期加上天数或减去天数 ,两日期相减的天数等. 实现要求: 实现运算符加与减的重载 设计一个日期类Date,包括年. ...

  5. 4.19构建一个类book,含有两个私有成员qu和price

    构建一个类book,含有两个私有成员qu和price,建立一个有5个元素的suzuki对象,将qu初始化为1~5,将price初始化为qu的10倍.显示每个对象的qu*price. 4.19 #inc ...

  6. 设计复数类 Complex继承于数字类 Number,私有成员变量包括 double类型的实部rea(父类 Number中已定义)和虚部imag,公有成员方法包括两个构造方法(一个不带参数的和一个带两

    ​ 设计复数类 Complex继承于数字类 Number,私有成员变量包括 double类型的实部rea(父类 Number中已定义)和虚部imag,公有成员方法包括两个构造方法(一个不带参数的和一个 ...

  7. 设计一个圆类(circle),内有私有成员radius代表半径, 函数get_radius( )用于获得半径、area( )用于计算圆的面积; (2)定义一个桌子类table,内有私有数据h

    1.(1)设计一个圆类(circle),内有私有成员radius代表半径, 函数get_radius( )用于获得半径.area( )用于计算圆的面积: (2)定义一个桌子类table,内有私有数据h ...

  8. java受保护的数据与_Javascript类定义语法,私有成员、受保护成员、静态成员等介绍...

    摘要:这篇JavaScript栏目下的"Javascript类定义语法,私有成员.受保护成员.静态成员等介绍",介绍的技术点是"javascript类.JavaScrip ...

  9. python 私有和保护成员变量如何实现?—— 单下划线 开始的成员变量叫做保护变量,意思是只有类实例和子类实例能访问到这些变量; 双下划线 开始的是私有成员,意思是只有类对象自己能访问...

    默认情况下,Python中的成员函数和成员变量都是公开的(public),在python中没有类似public,private等关键词来修饰成员函数和成员变量. 在python中定义私有变量只需要在变 ...

最新文章

  1. Oracle 物理结构(六) 文件-数据文件
  2. mysql php gpl_MySQL_MySQL数据库远程访问权限如何打开(两种方法),下载GPL版本安装MySQL Community - phpStudy...
  3. extjs中js资源缓存策略
  4. linux 封装python,基于linux下python学习(封装)
  5. Thread.sleep还是TimeUnit.SECONDS.sleep
  6. oracle em中查看jiob,HTML5 中的 b/strong、i/em 详解
  7. WPF: 使用CommandManager.InvalidateRequerySuggested手动更新Command状态
  8. 第八章:在Spark集群上掌握比较重要的图操作之Property Operators(2)
  9. SAS® Model Manager功能调研
  10. 华北计算机系统工程研究所录取名单,2018年华北计算机系统工程研究所接收推免研究生复试录取通知...
  11. 20200819:力扣202周周赛题解记录
  12. 深度学习中端到端的理解
  13. UNIX高级环境编程(11)进程控制(Process Control)- 进程快照,用户标识符,进程调度...
  14. PHP 根据URL将图片下载到本地(curl爬取)
  15. 怎么在Excel里输入可以打钩的选择框?
  16. ALSA驱动框架简介
  17. 学 Python 和学 Java ,哪个好找工作?
  18. synchronized(this)和synchronized(.class)的理解
  19. 韦东山第1期-学习笔记-4
  20. 一个新开端,存储服务器再添骨灰级玩家

热门文章

  1. DB2 9 底子(730 考试)认证指南,第 3 局部: 拜访 DB2 数据(3)
  2. 计算机应用基础课程基本要求,计算机应用基础课程标准
  3. 用JDBC直连方式访问SQL Server 2005详解
  4. 谈谈实习期间应该注意的几点问题,助你早日拿到转正offer
  5. css使按钮固定在界面上面
  6. 服务器物理内存总是九十几,服务器物理内存使用率90以上
  7. centos lnmp源码安装mysql_CentOS 6.6 下源码编译安装MySQL 5.7.5
  8. 推荐几十本投资书籍、互联网书籍及热门查看流量的工具
  9. PDF.js如何添加放大缩小的功能,转换成图片应该如何实现?
  10. python中改变参数值的方法_Python实现partial改变方法默认参数