1.1C#与.NET
C#源于C,C++和JAVA,采用两者之所长并增加了自己的新的特性。
C#是面向对象的语言,Visual C#是事件驱动的可视化编程语言,程序在集成开发环境IDE中创建,在集成开发环境中编写的程序响应定时器和用户启动的时间(例如鼠标的单击和键击)
Vitrual studio 会产生大部分GUI代码,利用IDE,程序员可以方便的生成运行,测试和调试C#程序,从而减少了生成可工作程序所需要的时间,比不用IDE的时候快很多。
.NET是微软的新一代的技术平台,为敏捷商务构建互联互通的应用系统,这些系统是基于标准的,联通的,适应变化的,稳定的和高性能的
从技术的角度,一个.NET应用是一个运行于.NET Framework之上的应用程序
如果一个应用程序跟.NET Framework无关,他就不能叫做.NET程序
CLI(Common Language Infrastructure,公共语言基层结构)是一种为虚拟机环境而制订的规范,使得由各种高级语言所编制的程序可以在不同的系统环境中执行之二不必更改或者重新编译原程序代码。
CLI指定了一种标准的虚拟机中介语言,然后将各种高级语言编制的源代码映射为该中间语言。
在中介语言中,当你执行程序的时候,代码是通过实时编译器(just-in-time(JIT) compiler)被最终映射为机器码的,叫做.NET程序。
CLR(Common Language Runtime)公共语言运行的时候一个执行程序的标准化环境,不管程序是用Bisual Basic,C#,还是C++等高级语言中的哪一种来编制的都可以在此环境中执行。
CLI也被定义为一种数据类型的公共集,叫做公共类型系统(Common Type System,CTS),它可以用于任意语言编的程序,以实行CLI为目标。
有一种标准的表达数据的类型系统,允许不同语言编制的组件用同意的方法来处理数据,从而使得不同语言编制的组件可以结合到单个程序当中。
CLR只不过是CLI规范在个人计算机上,在微软Windows操作系统中的一个执行而已。
CLI是规范,CLR是环境
术语CLI和CLR可以交换使用,但是CLI是一种标准规范,但是CLR确实微软对CLI的实现。
执行C#代码的过程包括下列的步骤
1:选择编译器
2:将代码编译为MSIL
MSIL包括用于加载,存储和初始化对昂以及对对象调用方法的指令,还包括用于算数和逻辑运算,控制流,直接内存访问,异常处理和其他的操作的指令。
要让代码可以运行,必须先将MSIL转换成为特定于CPU的代码,这通常是通过实时(JIT)编译器来完成的。
由于公共语言运行的时候为它支持的每种计算机结构都提供了一种或者多种的JIT编译器,因此同一组MSIL可以在所支持的任何结构上JIT编译和运行。
元数据描述代码中的类型,包括每种类型的定义,每种类型的成员的签名,代码引用的成员和运行的时候在执行的时候使用的其他的数据。
.NET Framework提供了两种方式来执行此类的转换:
.NET Framework实时(JIT)编译器
.NET Frame work Ngen.exe(本机映像生成器)
公共语言运行的时候提供使托管代码执行的时候能够发生以及可以在执行期间使用的各种服务的基础结构。
在运行之前,先编译成为特定的处理机的代码。
在执行过程当中,托管代码接受若干服务,这些服务涉及垃圾回收,安全性,与非托管代码的互操作性,跨语言调试支持,增强的部署,以及版本控制支持等。
动态内存的分配
C++程序必须很好的管理内存否则会导致内存的泄露
垃圾回收机制是CLR的一部分,我们不用操心内存是何时释放的,我们可以花更多精力关注应用程序的业务逻辑。
1.2面向对象的编程技术
C#是纯面向对象的程序技术
面向对象的程序设计(Oject Oriented Programming,OOP)是软件开发人员多年来从真实世界的建模当中收到启发所创造的一种软件开发的方法。
优点:
面向过程的程序设计语言最主要的特征是采用子过程(子模块)进行的软件开发。
在面向对象的编程方法中:
核心是类与对象
对象代表一个实实在在的存在的实体(实际物体)或者实际概念。对象是由类建模而成的。
面向对象的思想是现代软件开发的基础。
面向对象的程序是由各种各样的类,对象和方法组成的。
对象是类建模得到,对象是消息,数据和行为的组合。
对象是由类得到的,把由类转换为对象的这个过程我们称之为类的实例化。
对象可以是一个有形的实体(实际物体),也可以是一个无形的概念,对象往往是有边界的,有属性的,有方法的(有特定的用途)。
一般而言,对象应该具有以下的特性
两个对象可能什么都相同,但是他们不可能有相同的身份。
在当今的现实生活当中,到处都是形状,颜色各异的,大小功能不同的对象,所以说现实生活就是由各种各样的万事万物对象构成的。
为了对当今世界的各种各样的对象进行研究,以了解和掌握这些对象的习性,功能和使用,科学家将世界上的各种对象进行了逻辑上的分类。
将类理解成为对对象进行分类的一个模型,而该类中的对象都是由这个模型所产生的,他们具有这个类模型的共同的特征。
类中包含有字段,属性在类的声明当中用变量来表示,这样的变量称之为字段(field)
它是在类声明的内部声明的,但是位于类的方法声明体之外,当类的每一个对象维护自己的属性副本的时候,代表的属性的字段又称为实例变量。
字段就是在类当中声明的变量,C++当中称之为存储变量
字段和方法都具有访问权限的,通常是有3种访问权限的:private,public和protected.
使用权限:
private修饰的字段或者方法只允许在类的内部使用
public修饰的字段或者方法则没有什么限制,从类的外部可以直接使用,
protected修饰的字段或者方法可以在派生类当中使用。
方法(Method)描述了类实际执行的任务的机制,从形式上看,相当于C语言的函数,
Public class Hello
{
private int x=1;
Public void DisplayMessage(){
Console.WriteLine(“Helllo”);
}
}
Hello myHello=new Hello();//创建具体的对象
myHello.DisplayMessage();只有静态的方法才能够直接调用
1.3名字空间的类库
namespace中文多翻译为名字空间(或者命名空间)。
名字空间是用来组织和重用代码的编译单元的。
所谓的namespace是指标识符的各种可见范围
完整的写出Console类的话:
System.Console,WirteLine(“Hello”);
在名字的开头使用using语句表示引用该名字空间,在代码书写中可以省略名字空间。
namespace是C#的一个关键字,实际上,他只是起到标识作用,把需要的内容放到一起,细化管理,也可以定义自己的名字空间。
Namespace Space’sName
{//declaration}
一个项目就是你开发的一个软件
既然是.exe文件,就表明了他是可以被执行的,表现在程序当中,这些应用程序都是一个主程序入口点,即Main()
而类库,Windows控件等,则是没有这个入口点,所以也不能直接执行,而是仅仅提供一些功能,给其他的项目调用。
Visual Studio除了建立一个控制台项目之外,该项目同时还属于一个解决方案。
1.4一个C#的例子
类,字段,方法,主函数,
Visual Studio的下载教程
官方网站的下载地址
https://visualstudio.microsoft.com/zh-hans/
选择Community2019版本来下载,
之后再点击继续
下载完成之后需要重新启动
然后创建一个新的项目
之后选择控制台应用程序
配置项目
之后进入了页面当中了
namespace EXAMPLE1 {
class Program
{
static void Main(string[]args)
{
//创建类的实例
MyClass hello=new MyClass();
hello.SayHello();
Hello.x=S0;不可以的不能访问,必须把private改成public,主要是从安全的角度来考虑问题的
}
}
}
class MyClass {
private int x;//成员变量
public void SayHello() {//成员方法
Console.WriteLine("HelloWorld");
}
}}
Ctril+F5运行