C# 类成员备忘

  • 隐藏基类的方法
  • 调用重写或隐藏的基类方法
  • 嵌套的类型定义

隐藏基类的方法

当从基类继承一个(非抽象)成员时,也就继承了其实现的代码,如果继承的成员是虚拟的,就可以用Overrid重写这段实现代码,

无论继承的成员是否为虚拟的,都可以隐藏这些实现代码,这在继承的公共成员不像预期的那样工作时,是很有用的,

隐藏1:使用New关键词

    public class MybaseClass
    {
        public void DoSomething()
        {
            Console.WriteLine("MybaseClassDoSomething");
        }
    }
    public class MyDrivedClass : MybaseClass
    {
        new public void DoSomething()
        {
            Console.WriteLine("MyDrivedClassDoSomething");
        }

    }

隐藏2:使用重写方法

    public class MybaseClass
    {

        public virtual void DoSomething1()
        {
            Console.WriteLine("MybaseClassDoSomething1");
        }
    }
    public class MyDrivedClass : MybaseClass
    {
        public override void DoSomething1()
        {
            Console.WriteLine("MyDrivedClassDoSomething1");
        }
    }

使用时需要注意这两种方法的区别:

重写的情况下,无论是使用基类的对象还是子类的对象 调用的都是重写后的方法,

New关键词的情况下,如果使用的是基类对象,调用的还是基类的方法,子类对象调用的是子类方法

从图中可以看出实例化子类的时候都是先实例化基类 ,然后才执行子类的构造函数,最后是验证了上面两种隐藏方式的的区别。

调用重写或隐藏的基类方法

无论是重写成员还是隐藏成员,都可以在派生类内部访问基类成员,这在许多情况下是很有用的,

例如:

  1. 要对派生类的用户隐藏继承的公共成员,但仍能在类中访问其功能
  2. 要给继承的虚拟成员添加实现代码,而不是简单的使用重写的新代码替换它

为此可以使用Base关键词,它表示在派生类中的基类的实现代码

嵌套的类型定义

除了在名称空间中定义类以外还可以在其他类中定义这些类

    public class MyClass
    {
        public class MyNestedClass
        {

        }
    }

使用方法:

  CSharpRumenJD.MyClass.MyNestedClass mynestedclass = new MyClass.MyNestedClass();
时间: 2024-10-15 07:47:24

C# 类成员备忘的相关文章

图论类算法备忘

1. 图的定义: Graph = (V, E)表示图由顶点集和边集组成 2. 图的存储结构:常用的主要有 邻接矩阵和邻接表, 还有十字链表和邻接多重表等 邻接矩阵, 如 graph[i][j] = cost , 表示顶点i到顶点j的距离是cost 邻接表 数据结构表示 typedef struct arc { int m_adjVertex;// 邻接顶点的索引 int m_weight;    // 权值 struct arc *nextArc; }Arc; typedef struct ve

备忘之类中的static成员的访问方式

原文地址:http://leihuang.net/2014/05/19/List-Interviews/ 单链表的一些常见面试题汇总 单链表反转/逆序 求单链表倒数第N个数 找到单链表的中间结点 如何判断链表是否有环的存在 单链表建环,无环链表变有环 如何知道环的长度? 如何找出环的连接点在哪里? 删除单链表中的重复元素 下面我先简单叙述一下每道题的思路,然后把实现的程序一起贴出来,不会讲得太细,我觉得只要有了思路之后,接下来的难点就是语言上的一些细节问题了,这个不自己去实现,听别人讲是体会不到

Phalcon 知识点备忘

phalcon 毕竟无法看到源代码,有些小设置还是需要实践记忆. 一.如何调用config.php里面的配置 很多时候,我们习惯将全局的配置参数放入主配置文件中,比如分页数.比如appkey之类. 'params' => array(  //加入config.php中,那controller中如何调用呢 'limit' => 10, ) 想要在controller中调用,可以通过services.php $di->set('main_config', $config); //将配置文件作

<转>iOS第三方开源库的吐槽和备忘

iOS第三方开源库的吐槽和备忘 做iOS开发总会接触到一些第三方库,这里整理一下,做一些吐槽. 目前比较活跃的社区仍旧是Github,除此以外也有一些不错的库散落在Google Code.SourceForge等地方.由于Github社区太过主流,这里主要介绍一下Github里面流行的iOS库. 首先整理了一份Github上排名靠前的iOS库(大概600个repos) 除了逛一下每日/每月流行之外,也可以到这里来看一下整个iOS Repos的排名. 下面是一些比较流行的第三方库: HTTP 相比

基于Prism.Windows的UWP开发备忘

以前做UWP开发都是使用MvvmLight,主要是简单易上手,同时也写了很多MvvmLight的开发系列文章: UWP开发必备以及常用知识点总结 UWP开发之Mvvmlight实践九:基于MVVM的项目架构分享 UWP开发之Mvvmlight实践八:为什么事件注销处理要写在OnNavigatingFrom中 UWP开发之Mvvmlight实践七:如何查找设备(Mobile模拟器.实体手机.PC)中应用的Log等文件 UWP开发之Mvvmlight实践六:MissingMetadataExcept

JqGrid相关操作备忘 方法列表

JqGrid相关操作备忘 方法列表 1.获得当前列表行数:$("#gridid").getGridParam("reccount"); 2.获取选中行数据(json):$("#gridid").jqGrid('getRowData', id); 3.刷新列表:$(refreshSelector).jqGrid('setGridParam', { url: ''), postData: ''}).trigger('reloadGrid'); 4.选

验证码常用函数备忘

颜色聚类 1 public static class KmeansColor 2 { 3 /* 4 * 聚类函数主体. 5 * 针对一维 double 数组.指定聚类数目 k. 6 * 将数据聚成 k 类. 7 */ 8 public static Color[][] cluster(Color[] p, int k) 9 { 10 int intRunCount = 0; 11 start: 12 intRunCount++; 13 // 存放聚类旧的聚类中心 14 Color[] c = n

AngularJS之备忘与诀窍

译自:<angularjs> 备忘与诀窍 目前为止,之前的章节已经覆盖了Angular所有功能结构中的大多数,包括指令,服务,控制器,资源以及其它内容.但是我们知道有时候仅仅阅读是不够的.有时候,我们并不在乎那些功能机制是如果运行的,我们仅仅想知道如何用AngularJS去做实现一个具体功能. 在这一章中,我么视图给出完整的样例代码,并且对这些样例代码仅仅给出少量的信息和解释,这些代码解决是我们在大多数Web应用中碰到的通用问题.这些代码没有具体的先后次序,你尽可以跳到你关心的小节先睹为快或者

Annotation 使用备忘

title: Annotation 使用备忘 date: 2016-11-16 23:16:43 tags: [Annotation] categories: [Programming,Java] --- 概述 本文记录注解 Annotation 的概念和使用. Annotation 注解 Why 需要注解 在代码中常有些重复的代码,这些代码纯手工太耗时.可以通过一定的标记,然后处理即可. What 是注解? Annotation 分类 标准 Annotation 包括 Override, De