通用类型系统(Common Type System,CTS)
公共语言运行库(Common Language Runtime,CLR)
在编译使用.NET Framework库的代码时,不是立即创建用于操作系统的本机代码,而是把代码编译为通用中间语言(Common Intermediate Langauge,CIL),执行应用程序是Just-In-Time(JIT)编译器的任务
程序集的概念:包括可执行的应用程序文件(*.exe)和其他应用程序使用的库(*.dll)以及元信息(数据信息)和可选资源(CIL使用的其他资源)
开发环境:VS(visual studio)或VCE(virtual c# express)
数据类型分为内置类型和构造类型:
内置类型是C#中无法再分解的一种具体类型:有object、string、sbyte、byte、int、uint、short、ushort、long、ulong、char、bool、float、double、decimal。
构造类型是在构造类型基础上构造出来的类型,主要有枚举、数组、结构、集合、类、接口、委托。
按存储方式分为值类型和引用类型:
值类型(栈,快):数值类型、boolean、char、枚举、结构类型。
引用类型(堆,慢):数组、String、类、接口、委托。
数据类型的转换:
隐式转换和显式转换
装箱和拆箱:值类型和引用类型之间相互转换是要执行的操作。
1. 装箱在值类型向引用类型转换时发生
2. 拆箱在引用类型向值类型转换时发生
集合类 :System.Collections 命名空间包含定义各种对象集合的接口和类,这些对象包括列表、队列、位数组、哈希表和字典等。
流程控制之迭代循环
格式 foreach(类型变量 in 可迭代的表达式)
下例随机产生20个1~100整数,求大于50的数个数
[codesyntax lang=”csharp” lines=”normal” container=”div”]
namespace ConsoleApplication3 { class Program { static void Main(string[] args) { Random rd = new Random(); int[] a = new int[20]; for (int i = 0; i < a.Length; i++) { a[i] = rd.Next(100) + 1; Console.WriteLine(a[i] + " "); } Console.WriteLine(); int n = 0;
[/codesyntax]
//x为用于遍历的变量,a是数组,可迭代
foreach (int x in a)
{
if (x > 50)
{
n++;
}
}
Console.WriteLine(n);
}
}
}
异常处理
C#中结构化异常处理是通过try-catch-finally实现的。
编写异常处理程序的方法:将可能抛出异常的代码放入一个try块中,把处理异常的代码放入catch块中,catch是一个语句块,它以关键字catch开始,后面跟一个异常类型和要执行的异常处理语句。
异常发生时,程序终止执行,程序控制权交给距离最近的异常处理程序,使得在引发异常语句之后的代码没有执行,但是有一些(如资源清理,文件关闭等)操作是必须执行的,即使抛出异常也需执行,为此c#使用finally块,无论是否抛出异常,finally块总会执行。
所有异常类继承自System.Exception,该基类下存在两类异常:
1.从SystemException派生的预定义公共语言运行时异常类。
2.从ApplicationException派生的用户自定义的应用程序异常类。
抛出异常:throw语句,将异常交给上一层程序处理。
自定义异常