.net知识和学习方法系列(二十三)嵌套类

简介:
近日有个朋友问我这样一个问题,代码如下:
    class ExtClass
    {
        string s = " 字段";
        public class NestClass
        {
            ExtClass EC = new ExtClass();
            // 问题一 : EC.s  
            public void saya()
            {
            }
        }
        public void FF()
        {
            NestClass NC = new NestClass();
            // 问题二 :NC.EC
        }
}
第一个问题:在“问题一”的地方怎么用EC 调用不出s 这个字段,按道理说,NestClass s 都是类ExtClass  的成员,他们的修饰符不管是private 还是public ,都是能互相访问到的。这个理解应该不算错误,因为我们知道,在同一个类中,成员之间是可以该问的,与修饰没有关系,但现在一个问题是EC.s 是调用不出来的。其实问题不在于成员调用成员,在于在类内部去调用对象的成员,这是不充许的,这种调用只能在成员的内部去应用(本质上是在方法内部去调用,因为不管理是属性,还是索引器是在get set 的实现部分去调用的,get set 本质是又都是方法,所以说本质上是在方法的实现中调用。)
第二个问题:用NC 去调用EC 。从代码中,我们能知识,EC 这个对象是NestClass 类,的一个字段,现在的NestClass 类与FF 方法又都在ExtClass 类的内部,同属于这个类的成员,怎么又访问不到了呢?其实在这里有一个概念问题,就是类成员的问题,这里的类成员不是普通的方法,属性等,而是一个类,一个嵌套类,对于一个类来说,不管是内部还是外部,它还是一个完整人体系的,它也有自己的成员,并且这个类的成员同样有自己的修饰符,我们知道,在类内部,如果不给成员添加修饰符的话,默认为private ,这时的EC 的修饰符是private ,是私有的,它是不能会被本类外部的类或成员访问的,也可以这样去理解,NestClass 类与FF 方法是一个等级的(同属于类ExtClass 的成员),FF NestClass 类内部的成员不属于一个级别的(NestClass 内部的private 成员只对NestClass 其他成员来说是能访问到的),所以在FF 方法中是没有办法访问到类NestClass 内部的私有成员的,如果现在我们把EC 的实例化前加一个public ,就可以在FF 方法内去使用NC.EC 来调用EC 了。
从上面的例子可以看出来,不管是类还是嵌套类,类的通用的一些规则都是一样的,不会因为位置的不同而不同。但嵌套类出现的地方是比较特殊的,这时我们要分清级别(及类与成员)的关系,去分析应用。






















本文转自桂素伟51CTO博客,原文链接:http://blog.51cto.com/axzxs/149948 ,如需转载请自行联系原作者

相关文章
|
24天前
|
API 网络安全 数据安全/隐私保护
.NET邮箱API发送邮件的方法有哪些
本文介绍了.NET开发中使用邮箱API发送邮件的方法,包括SmtpClient类发送邮件、MailMessage类创建邮件消息、设置SmtpClient属性、同步/异步发送、错误处理、发送HTML格式邮件、带附件邮件以及多人邮件。AokSend提供高触达发信服务,适用于大规模验证码发送场景。了解这些技巧有助于开发者实现高效、可靠的邮件功能。
|
4月前
|
开发框架 .NET
ASP.NET Core NET7 增加session的方法
ASP.NET Core NET7 增加session的方法
38 0
|
7月前
|
API C# 图形学
DotNetGuide新增C#/.NET/.NET Core充电站(让你学习不迷路)
DotNetGuide新增C#/.NET/.NET Core充电站(让你学习不迷路)
|
8月前
|
IDE API 开发工具
拦截|篡改|伪造.NET类库中不限于public的类和方法
本文除了回顾拦截.NET类库中的方法,实现方法参数的篡改、方法返回结果的伪造,再着重介绍.NET类库中非public类及方法如何拦截。
拦截|篡改|伪造.NET类库中不限于public的类和方法
|
7月前
|
Windows
​史上最详细的Windows10系统离线安装.NET Framework 3.5的方法(附离线安装包下载)
​史上最详细的Windows10系统离线安装.NET Framework 3.5的方法(附离线安装包下载)
612 0
|
3月前
|
机器学习/深度学习 存储 编解码
多任务学习新篇章 | EMA-Net利用Cross-Task Affinity实现参数高效的高性能预测
多任务学习新篇章 | EMA-Net利用Cross-Task Affinity实现参数高效的高性能预测
46 0
|
7月前
|
Java
已解决Java.net.MalformedURLException异常的有效方法java.net.MalformedURLException: no protocol异常处理
已解决Java.net.MalformedURLException异常的有效方法java.net.MalformedURLException: no protocol异常处理
367 0
|
4月前
|
NoSQL 关系型数据库 MongoDB
【DotNetGuide】C#/.NET/.NET Core学习、工作、面试指南
【DotNetGuide】C#/.NET/.NET Core学习、工作、面试指南
108 0
|
4月前
|
开发框架 .NET API
C#/.NET/.NET Core推荐学习书籍(23年12月更新)
C#/.NET/.NET Core推荐学习书籍(23年12月更新)
241 0
|
25天前
|
安全 数据库 数据安全/隐私保护
七天.NET 8操作SQLite入门到实战 - 第五天引入SQLite-net ORM并封装常用方法
七天.NET 8操作SQLite入门到实战 - 第五天引入SQLite-net ORM并封装常用方法