C#教程.pdf

所需积分/C币:46 2018-02-27 15:14:18 320KB PDF
31
收藏 收藏
举报

C#教程.pdf
'Hello, World'程序始于引用 System命名空间的usng指合。命名空间提供了一种用于组织C#程序和库的分层 方法。命名空间包含类型和其他命名空间。例如 System命名空间包含许多类型(如程序中引用的cnle类)和 其他许多命名空间(如I和 Collections)。借助引用给定命名空间的 using指命,可以非限定的方式使用作为 相应命名空间成员的类型。由于使用 usIng指合,因此程序可以使用( onsale. WriteLine作为 System. Console. Writeline的简写。 “ Hello, World程序声明的Hel0类只有一个成员,即main方法。Main方法是使用静态修饰符进行声明。实例 方法可以使用关键字this引用特定的封闭对象实例,而静态方法则可以在不引用特定对象的情况下运行。按照约 定,Main静态方法是程序的入口点。 程序的输出是由 System命名空间中 Console类的 Writeline方法生成。此类由标准类库提供。默认情况下,编译 器会自动引用标准类库。 关于C#,要介细的內容还有很多。下面各主题概述了C语言元素。通过这些概述,可以了解C#语言所有元素的 基本信息,并获得深入了解C#语言元素所需的信息 ·程序结构 o了解C#语言中的关键组织概念:程序、命名空间、类型、成员和程序集 ·类型和变量 o了解C#语言中的值类型、引用类型和变量 表达式 o表达式是在操作数和运算符的基础之上构造而成。表达式生成的是值。 诘句 语勿用于表示程序的操作 ·类和对象 o类是最基本的C#类型。对象是类实例。类是使用成员生成的,此主题也对此进行了介绍 结构 与类不同,结构是属于值类型的数据结构 阵列 o数组是一种数据结构,其中包含许多通过计算索引访问的变量 接口 o接口定义了可由类和结构实现的协定。接口可以包含方法、属性、事件和索引器。接口不提供所定义的成 员的实现代码,仅指定必须由实现接口的类或结构提供的成员。 枚举 o举类型是包含一组已命名常量的独特值类型 ·委托 o委托类型表示对具有特定参数列表和返回类型的方法的引用。通过委托,可以捋方法视为可分配给变量 并可作为参数传递的实体。委托类似于其他一些语言中的图数指针概念,但与函数指针不同的是,委托不 仅面向对象,还类型安全。 特性 使用特性,程序可以指定关于类型、成员和其他实体的附加声明性信息。 程序结构 2018/1/11·3 min to read· Edit Online C#中的关键组织结构概念包括程序、命名空问、类型、成员和程序集。C#程序由一个或多个源文件组成。程序 声明类型,而类型则包含成员,并被整理到命名空闫中。类型示例包括类和接口。成员示例包括字段、方法、属性 和事件。编译完的C#程序实际上会打包到程序集中。程序集的文件扩展名通常为exe或11,具体取决于实 现的是应用程序还是库。 以下示例在Acme, Collections命名空间中声明 Stack类 using system; namespace Acme. Collections public class stack Entry top; public void Push(object data) top new Entry(top, data); public object Pop) if (top = null) throw new Invalidoperation Exception (; object result top data; return result: class Entry public Entry next; public object data public Entry (Entry next, object data) this next next this data data: 此类的完全限定的名称为 Acme Collections. Stack此类包含多个成员:一个top宇段、两个方法(push和Pop) 和一个Etry嵌套类。Enty类还包含三个成员:一个rext字段、一个data字段和一个构造函数。假定示例 的源代妈存储在 acme.cs文件中,以下命合行 csc /t:library acme. CS 捋示例编译成库(不含Min入口点的代码),并生成ame.d11程序集。 重要事项 上述示例使用csc作为命合行C#编译器。此编译器是 Windows可执行文件。若要在其他平台上使用C#,应使用NET Coe工具。 NET Core生态系统使用 dotnet CL来管理命合行生成。这包括管理依赖项和调用C#编译器。有关在NET Core支持的平台上使用这些工具的完整说明,请参阅这篇教程。 程序集包含中间语言{L)指合形式的可执行代码和元数据形式的符号信息。执行前,程序集中的L代码会被NET 公共语言运行时的实时(JT编译器自动转换成处理器专属代码。 由于程序集是包含代码和元数据的自描述功能单元,因此无需在C#中使用# nclude指合和头文件。只需在编译 程序时引用特定的程序集,即可在C程序中使用此程序集中包含的公共类型和成员。例如,此程序使用 a cme. d11程序集中的 Acme co1 lection. Stack类 using Acme. Collections class Example static void Main( Stack 5- new Stacko; s Push (1) s Push(10) s Push(100); Console. WriteLine(s Pop()); Console. WriteLine(s Popo) Console. WriteLine(s Pop()); 如果程序存储在文件ex3me.cs中,那么在exam1e.cs编译完后,可以使用编译器的/项引用 acme.d程序 集: csc /r: acme.dll example. Cs 这会创建 example,e可执行程序集,它将在运行时输出以下内容 12 使用C#,可以捋程序的源文本存储在多个源文件中。编译多文件C#程序时,可以捋所有源文件一起处理,并且源 文件可以随意相互引用。从概念上讲,就像是所有源文件在处理前被集中到一个大文件中一样。在C#中,永远都 不需要使用前向声明,因为声明順序无关紧要(除了极少数的例外情况)。C#并不限制源文件只能声明一种公共类 型,也不要求源文件的文件名必须与其中声明的类型相匹配。 上一页下一页 类型和变量 2018/1/11·8 min to read· Edit Online C#有两种类型:值类型和引用类型。值关型的变量直接包含数据,而引用类型的变量则存储对数据(称为“对象")的 引用。借助引用类型,两个变量可以引用同一对象;因此,对一个变量执行的运算可能会影响另一个变量引用的对 象。借助值类型,每个变量都有自己的数据副本因此,对一个变量执行的运算不会影响另一个变量(ref和ot 参数变量除外)。 C#值类型又细分为简单类型、枚誉类型、结构类型和可以为null的值类型。C#引用类型又细分为类类型、接口类 型、数组类型和委托类型。 下面概述了C#的类型系统。 ●值类型 o简单类型 0有符号的整型: sbyte、 short、int、1org 无符号的整型:byte、 ushort、uint、uong o Unicode字符:char O EEE浮点:f1oat、 double o高精度小数: decima1 o布尔 o枚举类型 格式为enmE{-)的用户定义类型 结构类型 格式为 struct s{)的用户定义类型 可以为nu的值类型 o值为mull的其他所有值类型的护展 ●引用类型 o类类型 o其他所有类型的最终基类: object o Unicode字符串: string 格式为 class c{…}的用户定义类型 接口类型 格式为1 Interface I…)的用户定义类型 o数组类型 o一维和多维,例如int和 int 委托类型 o格式为 delegate int D()的用户定义类型 八个整型类型支持带符号或不带符号格式的8位、16位、32位和64位值。 两个浮点类型(1at和 double)分别使用32位单精度和64位双精度EC60559格式表示。 decima1类型是适用于财务和货币计算的128位数据类型 C#的b01类型用于表示布尔值(true或 false) C#使用 Unicode编码处理字符和字符串。char类型表示UTF16代码单元, string类型表示一系列UTF-16代 码单元。 下面总结了C#的数值类型 有符号的整型 o sbyte:8位,介于-128到127之间 short:16位,介于-32,768到32,767之间 oint:32位,介于-2,147483648到2,147483647之间 o1ong:64位,介于9,223372036854775808到9223372036854,775807之间 无符号的整型 o byte:8位,介于0到25之间 ushort:16位,介于0到65535之间 uint:32位,介于0到4294967295之间 o ulong:64位,介于0到18446,744073,709,551615之间 浮点 float:32位,介于15×1045到34×1038之间,7位精度 o double:64位,介于50×10324到17×1033之间,15位精度 Decimal o decimal1:128位,至少介于-79×1028到79×102之间,至少为28位精度 C#程序使用类型声明创建新类型。关型声明指定新类型的名称和成员。用户可定义以下五种C#类型:类类型、结 构类型、接口类型、枚举类型和委托类型。 clas类型定义包含数据成员(字段)和函数成员(方法、属性及其他)的数据结构。类类型支持单一继承和多形 性,即派生类可以扩展和专门针对基类的机制 struct类型定义包合数据成员和函数成员的结构,这一点与类类型相似。不过,与类不同的是,结构是值类型,通 常不需要进行堆分配。结构类型不支持用户指定的继承,并且所有结构类型均隐式继承自类型 object o inter face类型将协定定义为一组已命名的公共函数成员。实现 inter face的cass或 struct必须提供接口函 数成员的实现代码。 terface可以继承自多个基接口, class8和 struct可以实现多个接口。 delegate类型表示引用包含特定参数列表和返回类型的方法。通过委托,可以将方法视为可分配给变量并可作为 参数传递的实体。委托类同于凼数式语霅提供的图数类型。委托也类似于其他一些语言中的函数指针概念,但与 凼数指针不同的是,委托不仅面向对象,还类型安全。 c1ass、 struct、 interface和 delegate类型全部都支持泛型,因此可以使用其他类型对它们进行参数化。 erum类型是一种包含已命名常量的独特类型。每个anum类型都有一个基础类型(必须是八种整型类型之-)。 enum类型的值集与基础类型的值集相同。 C#支持任意类型的一维和多维数组。与上述类型不同,数组类型无需先声明即可使用。相反,数组类型是通过在 类型名称后面添加方括号构造而成。例如,int是int类型的一维数红,int,1是int类型的二维数组, it是由int类型的一维数组构成的一维数组。 可以为nu值类型也无需先声明即可使用。对于所有不可以为nu的值类型T,都有对应的可以为nu的值 类型T,后者可以包含附加值nu1。例如,int?是可以包含任何32位整数或值nu10类型。 C#采用统一的类型系统因此任意类型的值都可视为 object。每种C类型都直接或间接地派生自 object类类 型,而 object是所有类型的最终基类。只需捋值视为类型 object,即可将引用类型的值视为对象。通过执行装 箱和取消装箱操作可以捋值类型的值视为对象。在以下示例中,int值被转换成 object,然后又恢复成int class Boxing Example static void Maino int i=123 object o=i // Boxing int j=(into; // Unboxing 当值类型的值转换成 object类型时,将分配ojet实例(亦称为“箱)来包含值,然后该值会复制到相应的箱 中。相反,当 object引用被显式转换成值类型时,将检查引用的 object是否是具有正确值类型的箱;如果检查 成功,则会捋箱中的值复制出来。 C#的统一类型系统实际上意味着可以“按需将值类型转换成对象。鉴于这种统一性,使用类型obct的常规用 途库可以与引用类型和值类型结合使用。 C#有多种变量,其中包括字段、数组元素、局部变量和参数。变量表示存储位置,每个变量都具有一种类型,用于 确定可以在变量中存储哪些值,如下文所远。 ●不可以为nu的值类型 o具有精确类型的值 ●可以为nu的值类型 onu11值或具有精确类型的值 object omu引用、对任意引用类型的对象的引用,或对任意值类型的装箱值的引用 类类型 onu用、对类类型实例的引用,或对派生自类类型的类实例的引用 接口类型 onul引用、对实现接口类型的类类型实例的引用,或对实现接口类型的值类型的装箱值的引用 数组类型 omu1l引用、对数组类型实例的引用,或对兼容的数组类型实例的引用 委托类型 omu11引用或对兼容的委托类型实例的引用 下一页 表达式 2018/1/11·4 min to read· Edit Online 袤达式是在操作数和运算符的基础之上构造而成。表达式的运算符指明了向操作数应用的运算。运算符的示例包 括+、-、*、/和new。操作数的示例包括文本、字段、局部变量和表达式。 如果表达式包含多个运算符,那么运算符的优先级决定了各个运算符的计算顺序。例如表达式x+y×z相当 于训算x+(y+2),因为·运算符的优先级高于+运算符。 如果操作数两边的两个运算符的优先级相同,那么运算符的结合性决定了运算的执行顺序: 除了赋值运算符之外,所有二元运算符均为左结合运算符,即从左向右执行运算。例如,x+y+z将计算为 赋值运算符和条件运算符(:)为右结合运算符,即从右向左执行运算。例如,x=y=z将计算为 可以使用括号控制优先级和结合性。例如,x+y*z先计算y乘z,并将结果与x相加,而(x+y)*z则 先计算x加y,然后捋结果与z相乘。 大多数运算符都可以重我。借助运算符重载,可以为一个或两个操作数为用户定义类或结构类型的运算指定用户 定义运算符实现代码。 下面总结了C#运算符,按优先级从高到低的顺序列出了各类运算符。同一类别的运算符的优先级也相同。每个类 别下均列出了相应类别的表达式,以及对每种表达式类型的说明 基本 ox,m:成员访问 0x(…):方法和委托调用 x[.]:数组和索引器访问 ox++:后置递增 ox-:后置递减 o new T(…,):创建对象和委托 newt(…)(}:使用初始值设定项的对象创建 o new i 匿名对象初始值设定项 o T[…]:数组创建 o typeof():获取T的Type对象 checked(x):在已检查的上下文中计算表达式 o unchecked(x):在未检查的上下文中计算表达式 default(T):获取类型为T的默认值 delegate{…,}:匿名函数(匿名方法 ●-元 +x:标识 取反 o1x:逻辑取反 按位取反 o+×:前萱递增 0…×:前置递减 o(T)x:将×显式转换成类型 o await x:异步等待x完成 乘法 ox*y:乘法 ox/y:除法 ox%y:求余 加法 ox+y:加法、字符串串联、委托组合 o×-y:减法、委托删除 e Shift o x< y:左移位 o×>>y 右移位 关系和类型测试 ox<y:小于 o×>y 大于 0x<=y小于或等于 °x> 大于或等于 o x is T:如果x是T,返回te;否则,返回flse o xas t:返回类型为T的x;如果x的类型不是T,返回mull 相等 ox=y:等于 o×!=y:不等于 逻缉“与 ox&y:整数型位AND,布尔型逻辑AND 逻辑XOR ox^y:整数型位XOR,布尔型逻辑XOR 逻缉“或” o×|y:整数型位OR,布尔型逻辑OR 朵件“与 0×&y:仅当x不是fe时,扌计算y 案件“或 ox|1y:仅当x不是true时,扌计算y nu|合并 ox?y:如果x为nul.计算结果为y;否则,计算结果为x 粲件运算 ox?y:z:如果ⅹ为true,计算y;如果x为fa15e,计算 赋值或匿名函数 ox=y:赋值 0xp=y:复合赋值;支持以下运算符 << o(Tx)=y:匿名函数 lambda表达式)

...展开详情
试读 41P C#教程.pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
关注 私信
上传资源赚钱or赚积分
最新推荐
C#教程.pdf 46积分/C币 立即下载
1/41
C#教程.pdf第1页
C#教程.pdf第2页
C#教程.pdf第3页
C#教程.pdf第4页
C#教程.pdf第5页
C#教程.pdf第6页
C#教程.pdf第7页
C#教程.pdf第8页
C#教程.pdf第9页

试读结束, 可继续读4页

46积分/C币 立即下载 >