zoukankan      html  css  js  c++  java
  • C# 1 .NET Framework框架介绍

    1、C#概览

      C#语言是微软于2000年发布,基于.NET Framewrok框架的、面向对象的高级语言。经过近十三年的发展,经历了5次大的升级,最新版本为C#5.0(对应于.NET Framework 4.5),下面是C#语言发展过程的简单性总结:
      
    C#版本 .NET 版本 Visual Studio 版本 特性描述
      C#     1.0/1.2     
    .NET Framework1.0/1.1   Visual Studio    2002/2003   
    C#第一个正式发行版,专为.NET编程提供支持
     C# 2.0  .NET Framework 2.0  Visual Studio 2005
    C#语言开始支持泛型,.NET Framework 2.0新增了支持泛型的类库
     C# 2.0  .NET Framework 3.0  Visual Studio 2005
    .NET Framework 3.0新增了支持分布式通信框架WCF,富客户端框架WPF,
    工作流WF以及基于Web身份验证(Cardspaces)
     C# 3.0  .NET Framework 3.5  Visual Studio 2008
    增加了对LINQ的支持,对于集合编程API进行了大幅改进.NET Framework 3.5对原有类库进行了扩展,从而支持
     C# 4.0  .NET Framework 4.0  Visual Studio 2010
    添加了动态类型(dynamic)的支持,对用于多线程的API进行了大幅改进。强调了多处理和多核心支持
     C# 5.0  .NET Framework 4.5  Visual Studio 2012
    主要对异步编程进行了增强(async和await)

    2、.NET Framework

    .NET Framework分为:

    • 公共语言运行时(CLR)
    • .NET Framework基类库(FCL)

    公共语言运行时(CLR)包含:

    • 公共类型系统(CTS)
    • 公共语言规范(CLS)
    托管代码(managed code):指由"运行时"控制程序的主要行为,管理诸如内存分配、安全性和JIT编译等方面。

    C#作为一门托管语言,和C/C++这些本地语言不同;C/C++经过编译后直接变成处理器可执行的机器码,而C#编译器则会将C#转换为CIL(简称IL)代码,而不是机器码,我们知道C#是基于.NET Framework 框架的语言,CIL代码转换为可执行的代码还需要经过CLR的转换,CLR根据需要编译CIL代码,这个过程称为JIT编译(Just-in-time)或即时编译。下面是C#代码编译到执行的过程:

    3、C# 代码执行过程

      学习一种语言最开的方式就是开始动手写程序,我们先从一个最简单的Hello world开始:

    按 Ctrl+C 复制代码
    按 Ctrl+C 复制代码
      程序编写完成后将代码所在文件保存为以.cs为后缀(C#编译器允许为C#源代码文件使用任何扩展名,但通常都是使用*.cs);接下来可以直接使用控制台(如果你想使用Visual Studio也可以)调用编译器进行编译(具体步骤参考:通过控制台调用编译器和IL反汇编工具),根据前面的示例图,我们知道C#源码经过C#编译器编译后会生成一个托管模块,如下:
    我们打开源文件所在目录,源码经过编译器编译后生成了一个exe文件,点击即可运行。在这里我们需要注意:在进行一次成功的C#编译之后,生成的肯定是一个程序集,无论它是一个程序,还是一个库。在前面我们知道:为了执行一个方法,首先必须把它的IL转换成本地的CPU指令(由CLR的JIT编译器负责),下面展示了Hello World程序首次调用时发生的情况:
    一个方法只有在首次调用的时候会调用JIT编译器编译成本地代码,以后对该方法所有的调用都以本地代码的形式全速运行,无需重新验证IL并把它编译成本地代码。因为JIT编译器会将本地CPU指令存储到动态内存中。下面是方法第二次被调用时的示意图:
    这里我们需要注意,一旦程序终止,编译好的代码也会被丢弃。如果再次运行应用程序,JIT编译器将会再次将IL编译成本地代码。

     4、C#命名空间

    要点:

    • 命名空间内的类型称为命名空间的成员
    • 一个源文件可以包含多个命名空间的声明
    • 引入命名空间的语法:using 命名空间名称

    C#中常用命名空间:

     
    命名空间 说明
    System 包含基本类,这些类定义常用的值类型和引用数据类型、事件和事件处理程序、接口、属性和异常处理。
    System.Data 提供对表示ADO.NET结构的类的访问。
    System.IO 用于操作文件的类。
    System.Text 包含表示ASCII、Unicode、UIF-7和UIF-8字符编码的类。
    System.Collections 包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。
    System.Threading 提供一些使得可以进行多线程编程的类和接口。
    System.Net 为当前网络上使用的多种协议提供了简单的编程接口。

    命名空间声明语法:

    namespace 命名空间的名字

    {

      //定义类

    }

    5、异常处理

    程序中的错误:

    • 语法错误
    • 运行时错误 
    • 逻辑错误

    c#中的异常:

    c#中的所有异常都派生自Exception

    System. Exception的常用属性:

    属性

    说明

    Message 描述错误情况的文本
    Source 导致异常的应用程序或对象名
    StackTrace 堆栈上方法调用信息,它用助于跟踪抛出异常的方法

    C#程序中经常使用的异常类:

    1、常见的异常类

    (1)SystemException类:该类表示.net平台引发的异常,被称为系统异常,通常无法修复。

    (2)ApplicationException类:该类表示应用程序发生非致命错误时所引发的异常。

    2、与参数有关的异常类

    (1)ArgumentException类:该类用于处理参数无效的异常。

    (2)FormatException类:该类用于处理参数格式错误的异常。

    3、数组有关的异常

    (1)IndexOutOfException类:该类用于处理下标超出看数组长度所引发的异常。

    (2)ArrayTypeMismatchException类:该类用于处理在数组中存储数据类型不正确的元素所引发的异常。

    (3)RankException类:该类用于处理维数错误所引发的异常。

    4、与算术有关的异常

    (1)ArithmeticException类:该类用于处理与算术有关的异常。

    (2)DivideByZeroException类:表示试图除以零而引发的异常。

    C#中使用try...catch...捕获并处理异常,finally中的代码在catch中的代码执行后执行。

    具体语法如下:

    try

    {

      //可能引发异常的程序代码

    }

    catch(Exception e)

    {

      //处理异常的代码

    }

    finally

    {

      //最终执行代码(不管代码如何控制,都会执行finally块中的代码)

    }

    编码规范:

    • 请勿将try...catch块用于流程控制。
    • 不得声明空的catch块。
    • 避免在catch块中嵌套try...catch。

    C#中可以使用throw语句引发异常。 

    使用关键字new

    如:throw new 异常类(表达式、字符串);

  • 相关阅读:
    【kindeditor】kindeditor的使用
    【kindeditor】KindEditor获取多个textarea文本框的值并判断非空
    jsp文件放在WebRoot下还是WebInfo下
    前端居中模板(常用HTML模板)
    mybatis传入map参数,map中包含list(输入参数)
    mybatis动态sql片段与分页,排序,传参的使用与一对多映射与resultMap使用
    mysql实现随机获取几条数据的方法
    android library projects cannot be launched
    [leetcode]Longest Consecutive Sequence
    看懂下面C++代码才说你理解了C++多态虚函数!
  • 原文地址:https://www.cnblogs.com/yuchengping/p/3063271.html
Copyright © 2011-2022 走看看