Visual C#之核心语言

	期末阶段到来了,一方面要准备着专业课的考试,一方面计算机的进度也不能停下来。在寒假到来之前,机房重构是不打算开始了,到时候做着做着又得停下来,感觉不太好。所以,趁这段时间,找了基本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关键字使得一个类抽象化。抽象类的存在为继承提供了广阔的空间,不能为一个抽象类创建一个实例。
	一个接口是一个协定,定义了从基类概括出来的必不可少的行为。一个接口要求制定一个行为集合,但是并不实现它。派生类型可以以一个恰当的方式自由地实现接口。接口必须被继承,不能为一个接口创建一个实例。
知道了两者的概念后,就会觉得两者有相似之处,下面就是对两者进行的一个简单的比较:
相同:
	一个接口类类似于一个抽象类。两者都要被继承,都不能被实例化。
	抽象类的成员要求在派生类型中加以实现,接口的成员也要求在派生类型中加以实现。
不同点:
	抽象类可以包含一些实现,而接口不能有实现。
	抽象类可以继承其他类和接口,而接口只能继承其他接口。
	抽象类可以包含字段,而接口没有状态。
	抽象类具有构造函数和析构函数,而接口没有。
	接口可以被结构继承,而抽象类不能。
	接口可以支持多继承,而抽象类只能支持单继承。
	一直觉得,接口的概念很难理解,最后,就用生活中的实例再来说说接口的应用:
车的行为包括点火、熄火、加速和减速等。而车又有很多类型,如小汽车、摩托车和公交车等等。它们都拥有车的上述行为,我们就可以用一个接口来封装好这些行为。因为不同的车对这些行为的实现结果是不一样的。如:小汽车和摩托车的加速是不一样的。定义好了这样一个接口,就可以让不同的车自己去实现自身的一个和其它车不一样的行为。
总结:
	这一编的学习内容很基础,在之前的学习中也接触过。但总是感觉有些概念理解得很模糊,借这段复习时间,偶尔抽个时间看本书温习整理整理,感觉效果还是不错的。加上这一次也有了概念之间的对比和实例结果支撑,理解得也更加深刻了些。
				
时间: 2024-09-24 16:13:17

Visual C#之核心语言的相关文章

《Visual C++ 2012 开发权威指南》——第2章 Visual C++2012语言新特性2.1 Visual C++2012的语言新特性(1)

第2章 Visual C++2012语言新特性 Visual C++ 2012 开发权威指南 有一种新的C++标准就有一种新版本的Visual C++,新的版本Visual C++将更加符合C++标准!在其发展过程中新的C++标准被(乐观)称为C++0x.它最后被发布在2011年,现在称为C++11. 对于Visual C++,它有三个不同版本的数字,有不同的内部版本和编译器版本(cl.exe和_MSC_VER宏-显示不同,因为我们C++编译器早在Visual C++中的"可视化").

《Visual C++ 2012 开发权威指南》——2.2 Visual C++2012的语言新特性(2)

2.2 Visual C++2012的语言新特性(2) Rvalue引用:N1610"Rvalues类对象的初始化的澄清"是早期尝试启用无rvalue引用move 语意. 这些新规则还没有完全实现VC11开发者预览中. Rvalue引用v3.0添加自动生成的构造函数和移动赋值运算符在一定条件下的新规则.这不会进行中VC11,还将继续遵循的永远不会自动生成move构造函数/移动页本页的行为. 移动语义 Rvalue引用支持移动语义的实现,可以显著提高应用程序的性能.移动语义使能够调用资源

《Visual C++ 2012 开发权威指南》——2.3 Visual C++2012的语言新特性(3)

2.3 Visual C++2012的语言新特性(3) 在VC12(Visual C++2012),我们打算完全支持C++11标准库,但实施编译器功能可以自定义(另外,VC12不会完全实现C99标准库,已经通过引用纳入C++11标准库.注意本页和VC12已经有).这里是我们不断的变化的非详尽列表: 新头文件:......和. 进驻:根据需要由C++11,我们已经实现了emplace()/emplacefront()/emplace_back()/ emplace hint()/emplace_a

Visual Basic 2005在语言上的增强(十三)显式的数组范围及小结

visual|数组 显式的数组范围 你现在可以使用显式的数组范围来声明数组,这样的声明更加清晰可读了:Dim a(10) As Integer '旧方式Dim b(0 To 10) As Integer '新方式 Visual Basic中的数组范围仍然是以零为起始,所以如果你想声明一个不是以零为起始范围的数组,你就会得到一个编译器错误. 小结 Visual Basic 2005语言获得了一些重要的特性以及诸多细微的增强,这些都极大地提高了它的易用性和开发人员的生产效率.这个语言变得更加完善,并

visual stu...-使用c++语言如何在visual studio 中编写可视化窗口程序

问题描述 使用c++语言如何在visual studio 中编写可视化窗口程序 使用c++语言如何在visual studio 中编写可视化窗口程序? 解决方案 就可以创建MFC 程序 剩下的就是代码实现功能的问题了 解决方案二: 最简单的已经使用MFC工程向导,你也可以手动写代码做Win32的基本程序结构. 解决方案三: 最简单的方法是用对话框当窗口用,在资源视图里可以创建对话框,代码里直接一句DialogBox()就行,对话框上可以直接托控件上去,非常方便.而且不用一些专门的软件,比如spy

在Visual Studio中用C++语言创建DLL动态链接库图文教程_C 语言

什么是DLL(动态链接库)? DLL是一个包含可由多个程序同时使用的代码和数据的库.例如:在Windows操作系统中,Comdlg32 DLL执行与对话框有关的常见函数.因此,每个程序都可以使用该DLL中包含的功能来实现"打开"对话框.这有助于促进代码重用和内存的有效使用.这篇文章的目的就是让你一次性就能了解和掌握DLL. 为什么要使用DLL(动态链接库)? 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可以将它构造成相对独立的功能模块并在之后的项目中重复

Visual Basic 2005在语言上的增强(三)XML注释

XML注释允许你在代码中添加结构化的文档,并且因为这是C#最先采用的技术,Visual Basic程序员觊觎已久了.XML注释能够描述各种各样的代码元素,包括类.字段成员.方法.以及枚举等等.一旦你创建了一个描述代码特性的XML注释,当你继续在编辑器里键入代码特性时,你立刻会得到关于参数和返回值的智能感知.假设你现在有一个标志着如下签名的函数原型:Private Function GetCustomerData(ByVal CustomerCode As String) As DataSet把代

Visual Basic.NET 中的语言新变化

visual 简介 要快速创建企业级的Web应用程序,开发人员必须依赖于可伸缩性.强壮性和可重用性等商业逻辑.在过去的几年中,面向对象的程序设计成为符合这些要求的系统的首要方法.使用面向对象的编程语言有助于使大规模的系统更易于理解.更易于调试.升级更迅速. 为了使Visual Basic开发人员能够从面向对象设计中受益并简化企业级Web应用程序的开发,Visual Basic的下一个版本­--Visual Basic.NET将支持包括实现继承在内的全部面向对象的语言特性.有了这些语言特性,Vis

《C++语言入门经典》一1.2 Visual Studio 2010 集成编译环境

1.2 Visual Studio 2010 集成编译环境 C++的开发环境有很多种,例如,常见的Visual C++ 6.0 等.Visual Studio 2010 是微软公司继Visual C++ 6.0 之后新设计的集成开发环境,它更加支持C++标准规范,对新标准--C++0x 提供全面的支持.下面就来介绍它的使用方法. 1.2.1 安装Visual Studio 2010 在安装Visual Studio 2010 之前,首先要了解安装Visual Studio 2010 的必备条件,