c# 软件有效期限制_C#程序设计中国大学MOOC

本文详细介绍了C#语言与.NET框架的关系,强调了C#作为面向对象语言的特点,以及.NET Framework中的CLI(Common Language Infrastructure)和CLR(Common Language Runtime)的概念。文章还探讨了代码编译、执行过程,包括MSIL、JIT编译和垃圾回收机制,并提到了面向对象编程的基本概念,如类、对象和名字空间。
摘要由CSDN通过智能技术生成

9080dd03f8bd553538bab051e18066dd.png

本篇文章首发于公众号凡花花的小窝

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编译和运行。

元数据描述代码中的类型,包括每种类型的定义,每种类型的成员的签名,代码引用的成员和运行的时候在执行的时候使用的其他的数据。

  1. 将MSIL编译成为本机的代码

.NET Framework提供了两种方式来执行此类的转换:

.NET Framework实时(JIT)编译器

.NET Frame work Ngen.exe(本机映像生成器)

  1. 运行代码

公共语言运行的时候提供使托管代码执行的时候能够发生以及可以在执行期间使用的各种服务的基础结构。

在运行之前,先编译成为特定的处理机的代码。

在执行过程当中,托管代码接受若干服务,这些服务涉及垃圾回收,安全性,与非托管代码的互操作性,跨语言调试支持,增强的部署,以及版本控制支持等。

  1. 垃圾回收

动态内存的分配

C++程序必须很好的管理内存否则会导致内存的泄露

垃圾回收机制是CLR的一部分,我们不用操心内存是何时释放的,我们可以花更多精力关注应用程序的业务逻辑。

1.2面向对象的编程技术

C#是纯面向对象的程序技术

面向对象的程序设计(Oject Oriented Programming,OOP)是软件开发人员多年来从真实世界的建模当中收到启发所创造的一种软件开发的方法。

优点:

  1. 可以创建功能异常复杂的软件
  2. 利用其中的代码复用,可以加速软件开发的过程
  3. 增强了软件的后期的可扩展性和可维护性

面向过程的程序设计语言最主要的特征是采用子过程(子模块)进行的软件开发。

在面向对象的编程方法中:

核心是类与对象

对象代表一个实实在在的存在的实体(实际物体)或者实际概念。对象是由类建模而成的。

面向对象的思想是现代软件开发的基础。

面向对象的程序是由各种各样的类,对象和方法组成的。

对象是类建模得到,对象是消息,数据和行为的组合。

对象是由类得到的,把由类转换为对象的这个过程我们称之为类的实例化。

对象可以是一个有形的实体(实际物体),也可以是一个无形的概念,对象往往是有边界的,有属性的,有方法的(有特定的用途)。

一般而言,对象应该具有以下的特性

  1. 对象是有状态的,对象的状态由对象的各种属性和相应的值组成的
  2. 对象可以显示行为(即方法),对象的行为(方法)使得对象可以完成相应的功能
  3. 对象有一个唯一的身份,对象的身份可以把他和其他的对象区别出来。

两个对象可能什么都相同,但是他们不可能有相同的身份。

在当今的现实生活当中,到处都是形状,颜色各异的,大小功能不同的对象,所以说现实生活就是由各种各样的万事万物对象构成的。

为了对当今世界的各种各样的对象进行研究,以了解和掌握这些对象的习性,功能和使用,科学家将世界上的各种对象进行了逻辑上的分类。

将类理解成为对对象进行分类的一个模型,而该类中的对象都是由这个模型所产生的,他们具有这个类模型的共同的特征。

类中包含有字段,属性在类的声明当中用变量来表示,这样的变量称之为字段(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/

497e7cf5b959d91f97c5410af27d85a5.png

e0c3caa4af332190a113a2eb43f6779e.png

选择Community2019版本来下载,

之后再点击继续

7fa6a8435d4895c3830add9f58b4d4f5.png

336351f8ba20dfe8ce8817ecf012660f.png

之后选择C++的桌面开发,开始下载

8656da19633e52184ea7d77bfc85640b.png

下载完成之后需要重新启动

11f3d95483067559c21cb00708170e12.png

然后创建一个新的项目

013b8dff7c860be7120e8b88a1c1a1a1.png

之后选择控制台应用程序

配置项目

fc04fee52a675ab8c850024d4bebef74.png

之后进入了页面当中了

42bba3368f1bbda0a87a219709f8c301.png

e37b7b3e4eb08bb13a3778c5ab71899b.png

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运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值