期末阶段到来了,一方面要准备着专业课的考试,一方面计算机的进度也不能停下来。在寒假到来之前,机房重构是不打算开始了,到时候做着做着又得停下来,感觉不太好。所以,趁这段时间,找了基本C#、.NET的书看看,把一些基础的东西再巩固巩固。
    这一篇主题为“C#之核心语言”。一共包含三编的内容,分别为C#编程介绍、类型和继承。
    在这本书中,知识点结构不是很清晰,但是知识点讲解得很详细,对我们来说,还是比较容易理解的。
第一编 C#编程介绍

这里主要介绍一个命名空间的概念。 【命名空间】用来组织和重用代码的编译单元。之所以出来这样一个东西,是因为人类可用的单词数太少,并且不同的人写的程序不可能所有的变量都没有重名现象。为了解决这个问题,引入了名字空间这个概念,通过使用 namespace xxx。 我觉得就好比储藏室,其中包含各类东西,而需要什么,就从中去找。有时候可能会因为东西一样而拿错,所以就在每个储藏室都编个名,这样就不会混淆,而是到特定的一个储藏室中去取。

第二编 类型

首先明确这里的类型主要包括哪些东西。

          
 在上面的图中,可能第三级分支大家都很熟悉,而对于第二级分支就感觉陌生不少。以前也没有这样归类过,比如说类、接口这些都没有想过它们其实都是属于引用类型(由类型的实际值引用(类似于指针)表示的数据类型),而数据类型、结构则是属于值类型(一种由类型的实际值表示的数据类型)。大体清楚后,就是细枝末节部分的总结。下面的导图就是主要知识点。
          其实这部分内容之前也是频频接触,但始终没有专门总结,有疑惑的地方也只是挂着。这一次的学习,加上书上代码的演示,有些东西清楚了不少。比如说成员的可访问性,自己的世界里好像只有public和private。
第三编 继承

一些类通常会和其它类相关,用于对类进行关联的两种做法是容器和继承。容器表达的是一种“有一个”关系,一个类包含或嵌入另一个类。继承是基于“是一个”关系,一个类是另一个类的一种类型。 继承涉及到一个基类型和派生类型,其保证了层次结构的清晰性,也促进了代码的重用。 引用类型可以继承类和接口,而值类型不能继承其他的值类型或类。 下面是一些概念的比较理解: 【重写】与【重载】 一个基类与一个派生类,当一个基类的一个成员被重写时,基成员和派生成员的签名是相同的。而想要实现重载,需要不同的签名。这就是两者最大的不同。 重写包含的两个关键字: virtual关键字表示一个成员可以在一个子类中被重写。它可以用在方法、属性、索引器和事件上。在派生类中,override关键字表示要对基类的一个虚成员进行重写的意图。 特别地,在C#中,默认情况下,函数不能被重写。父类必须默认方法的重写,此外,子类必须承认它要对方法进行重写的意图。这就防止子类在不知情的情况下对基类成员进行重写。 其次,当一个成员以不同的签名被重写时,在派生类中会产生一个编译器警告,这就防止在希望方法重写的地方意外发生重载。 【构造函数】与【析构函数】 构造函数是对类进行初始化,而析构函数是对类进行清理。 共同点: 两者都不能被继承。所以,基类组件负责对基类成员,派生类组件负责对派生类成员。 不同点: 调用的顺序相反。构造函数是从基类的构造函数自上而下地调用,而析构函数是被自下而上地调用,最后派生的组件最先被清理。 下面看实例,从结果中可以更加清楚的看到两者的顺序相反。            前者为构造函数调用,后者为析构函数的调用。下面是代码:

构造函数与析构函数的应用:
public class starter{public static void Main(){XClass obj = new XClass();}}public class ZClass{public ZClass(int param){Console.WriteLine("ZClass constructor");}}public class YClass : ZClass{public YClass(int param): base(YClass.MethodA()){Console.WriteLine("YClass consturctor");}public static int MethodA(){Console.WriteLine("YClass constructor initializer");return 0;}}public class XClass : YClass{public XClass():base(XClass.MethodA()){Console.WriteLine("XClass consturctor");}public static new int MethodA(){Console.WriteLine("XClass constructor initializer");return 0;}}
 public class Strater{public static void Main(){XClass obj = new XClass();}}public class ZClass{~ZClass(){Console.WriteLine("ZClass destructor");}}public class YClass : ZClass{~YClass(){Console.WriteLine("YClass desturctor");}}public class XClass : YClass{~XClass(){Console.WriteLine("XClass desturctor");}}
【抽象类】与【接口】
    抽象类就是概念。abstract关键字使得一个类抽象化。抽象类的存在为继承提供了广阔的空间,不能为一个抽象类创建一个实例。
    一个接口是一个协定,定义了从基类概括出来的必不可少的行为。一个接口要求制定一个行为集合,但是并不实现它。派生类型可以以一个恰当的方式自由地实现接口。接口必须被继承,不能为一个接口创建一个实例。
知道了两者的概念后,就会觉得两者有相似之处,下面就是对两者进行的一个简单的比较:
相同:
    一个接口类类似于一个抽象类。两者都要被继承,都不能被实例化。
    抽象类的成员要求在派生类型中加以实现,接口的成员也要求在派生类型中加以实现。
不同点:
    抽象类可以包含一些实现,而接口不能有实现。
    抽象类可以继承其他类和接口,而接口只能继承其他接口。
    抽象类可以包含字段,而接口没有状态。
    抽象类具有构造函数和析构函数,而接口没有。
    接口可以被结构继承,而抽象类不能。
    接口可以支持多继承,而抽象类只能支持单继承。
    一直觉得,接口的概念很难理解,最后,就用生活中的实例再来说说接口的应用:
车的行为包括点火、熄火、加速和减速等。而车又有很多类型,如小汽车、摩托车和公交车等等。它们都拥有车的上述行为,我们就可以用一个接口来封装好这些行为。因为不同的车对这些行为的实现结果是不一样的。如:小汽车和摩托车的加速是不一样的。定义好了这样一个接口,就可以让不同的车自己去实现自身的一个和其它车不一样的行为。
总结:
    这一编的学习内容很基础,在之前的学习中也接触过。但总是感觉有些概念理解得很模糊,借这段复习时间,偶尔抽个时间看本书温习整理整理,感觉效果还是不错的。加上这一次也有了概念之间的对比和实例结果支撑,理解得也更加深刻了些。

Visual C#之核心语言相关推荐

  1. Visual C# .NET 2003 语言的改变

    Visual C# .NET 2003 语言的改变 Prashant Sridharan Microsoft Corporation 2002年12月30日 适用于: Microsoft Visual ...

  2. 【错误记录】安装 Visual Studio 2013 中文语言包报错 ( 需要 Microsoft Visual Studio Test Agent , 但此计算机上并为安装它 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 运行 下载的 vstf_testagentlp.exe Visual Studio 2013 中文语言包 , 报如下错误 ; 二.解决方案 在 ht ...

  3. HTML第八章ppt,html教程第八章(JavaSript核心语言对象).ppt

    JavaScript核心语言对象 第 八 章 回顾 什么是JavaScript 如何在HTML中引用JavaScript 什么是变量及其作用域 JavaScript支持的基本数据类型 JavaScri ...

  4. HTML是万维网核心语言的第几代,Html5相关的知识点总结

    1.html5:万维网的核心语言.HTML规范的第五次重大修改.HTML是一种标记语言. 2.布局的语义化标签: article:标签装载显示一个独立的文章内容 section :标签定义文档中的节 ...

  5. Visual Studio创建C语言编程环境

    Visual Studio创建C语言编程环境 1.启动 visual studio 2.创建新项目 3.配置新项目 4.创建源文件 5.添加新项 1.启动 visual studio 将 visual ...

  6. VBS是基于Visual Basic的脚本语言,全称是:Microsoft Visual Basic Script Edition

    VBS是基于Visual Basic的脚本语言.VBS的全称是:Microsoft Visual Basic Script Edition.(微软公司可视化BASIC脚本版). 其语言类似Visual ...

  7. c语言编译运行程序,用visual c++ 运行C语言程序的过程

    用visual c++ 运行C语言程序的过程 下面是用visual c++ 运行C语言程序的过程的详细步骤及操作教程,欢迎参考学习! 一:点击File-new(新建)出现如下对话框 在该对话框中选择第 ...

  8. html5是万维网的核心语言,html5是什么语言

    html5是一种标记语言,是超文本标记语言(HTML)的第五次重大修改.HTML5是Web中核心语言HTML的规范,用户使用任何手段进行网页浏览时看到的内容原本都是HTML格式的,在浏览器中通过一些技 ...

  9. OCaml文档(一) - 核心语言部分

    这学期的算法,编译这些不限语言的课,我基本都用了ocaml自己写(这样就不会被同学要代码了) 之前我在JavaScript写函数式,总觉着怪怪的,直到我找到了OCaml 虽然这个语言和我一样大,但是普 ...

最新文章

  1. 【直播】耿远昊:Pandas入门讲解(安泰第四届数据科学训练营)
  2. 有“肌肉”有“血管”!波兰团队耗时5年研发超逼真仿生机械臂,网友:很怪异也很牛掰...
  3. Windows下一个curl使用
  4. 大话Web-Audio-Api
  5. mysql8.0限制用户只能访问指定数据库,限制用户只有某种权限
  6. ASP.NET Core Kestrel部署HTTPS
  7. react-hooks_在5分钟内学习React Hooks-初学者教程
  8. Java-异常03 自定义异常
  9. Bootstrap 如何使用字体图标
  10. 常见十大排序算法--python3实现
  11. 代码投毒、删库跑路,开源生态链安全该如何保证?
  12. 【并行计算-CUDA开发】 NVIDIA Jetson TX1
  13. (结构型模式)FlyWeight——享元模式
  14. Java -- 新IO -- 目录
  15. 【渝粤题库】广东开放大学 招投标与合同管理 形成性考核
  16. 如何手动启动消防广播_消防应急广播的设置要求是怎样的?
  17. 定时监控Ubuntu系统HDMI热插拔进行锁屏操作
  18. [转载] 白酒基础知识
  19. 安装net_speeder
  20. 读《人脸自动机器识别》

热门文章

  1. 数据结构——树、二叉树、森林、哈夫曼树、字符串模式匹配
  2. 没有找到 html 模板,Spring Boot and Thymeleaf:找不到HTML模板
  3. socket接收的消息怎么更新到页面_spring boot 集成 websocket 实现消息主动
  4. 卸载阿里云服务器的mysql_阿里云服务器入门教程
  5. python123子字符串输出_Python--字符串函数方法全解
  6. Java设计模式(十三):代理设计模式
  7. Java编程思想 第十三章:字符串
  8. 解决ajax劫持,Ajax实现检测网站劫持的方法
  9. java实现两个最大整数相加_JAVA-实现两个超大整数相加
  10. 设置 mock_【学习】接口测试-使用mock生产随机数据