




已阅读5页,还剩114页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章 .NET与C1.1 .NET和C#1.1.1 什么是.NET 定义根据微软的定义:.NET is a revolutionary new platform, built on open Internet protocols and standards, with tools and services that meld computing and communications in new ways. 即:.NET = 新平台 + 标准协议 + 统一开发工具.NET技术是微软公司推出的一个全新概念,“它代表了一个集合、一个环境和一个可以作为平台支持下一代Internet的可编程结构。” .NET的最终目标就是让用户在任何地方、任何时间,以及利用任何设备都能访问所需的信息、文件和程序。 .NET的构成.NET开发平台.NET FrameWork.NET Development Tools1、.NET Framework(框架)是整个开发平台的基础,包括Common Language Run(CLR:公共语言运行库)和.NET Class Library(类库)。(1)公共语言运行库是.NET的基础,用户可以将公共语言运行库看作是一个在执行时管理代码的代理,它提供核心服务(如内存管理、线程管理和远程处理)。(2).NET类库是一个综合性的面向对象的可重用类集合。当用C编写的程序要在其它没有安装.net的机器上运行时,必须安装.NET框架,否则不能运行,所以.net编写的程序的可移植性稍差。2、.NET开发工具包括Visual Studio.NET集成开发环境和.NET编程语言。其中,Visual Studio .NET集成开发环境用来开发和测试应用程序。.NET编程语言包括Visual Basic、Visual C+和新的Visual C#等用来创建运行在公共语VBVC+C#JScript公共语言运行规范(Common Language Specification)VB公共语言运行规范(Common Language Specification)Windows窗体(C/S)Asp.NET(B/S)ADO.NET和XML基类库(Base Class Library)COM+ServicesWindows公共语言运行库(Common Language Run).NET开发平台言运行库(CLR)上的应用程序。1.1.2 什么是C#C#读作C Sharp,是C和C+语言家族中第一种面向组件的编程语言,是一种使用简单、面向对象、类型安全的现代编程语言。作为Microsoft的下一代面向对象的语言,能够让开发人员在.NET平台上快速地建立大量的应用程序。按照Microsoft给出的定义,C#是一种源自于C和C+的,简单的、现代的、面向对象的和类型安全的程序设计语言,它结合了VB的灵活性和C语言的强大的功能,是新一代的编程语言。C#为程序员提供了开发飞速发展的Web应用程序所需要的强大而灵活的功能。与C+相比,C#将更容易被人们理解和接受,未来大量.NET平台的应用将由C#开发,C#将是未来开发企业级分布式应用程序的首选。1.2 C#程序结构介绍1.2.1 创建第一个C#控制台(或称命令行)程序程序代码如下: /源文件:welcome.cs using System; class Welcome static void Main() Console.WriteLine(Welcome you to enter the C# world!); 1.2.2 代码及结构分析1、上面的代码你可以在任意一种字处理软件中进行编写,或在.NET集成开发环境(Integrated Developer Environment,IDE)中直接编写,然后以文件名“Welcome.cs”存盘。典型的C#源文件都是以“.cs”作为文件的扩展名的。2、名字空间using System表示导入名字空间,等同于C或C+中的“#include”。 “System”就是一个名字空间,是Microsoft.NET系统提供的类库,“using”指令允许对属于该名字空间成员的类型无限制引用。3、类和类的方法在程序第二行,class Welcome声明了一个类,类的名字叫做“Welcome”。这个程序让我们所作的事情都依靠它来完成。在一个C程序中,至少要包含一个类。Static void Main()表示类“Welcome”中的一个方法,方法总是为我们完成某项工作的。在C#中,程序的执行总是从“Main()”方法开始,一个程序中不允许出现两个或者两个以上的“Main()”方法。Main()函数在C#里非常特殊,它是编译器规定的所有可执行程序的入口点,Main()函数名的第一个字母要大写,否则将不具有入口点的语义。就像一个文件夹可以容纳多个文件一样,一个名字空间可以被视为某些类的一个容器。因为.NET有很多类,所以名字空间是必要的。微软已经编写了数以千计的基类,同时任何合理的大型应用程序都可以定义更多的类。通过把类放入名字空间可以把相关的类组织起来,并且可以避免命名冲突。4、“”和“”与C和C+一样,源代码被包含在一对大括号之中,每一个右括号总是和它前面离它最近的一个左括号相配套。如果左括号和右括号没有全部的配套,那么这就是一个错误的程序。所有语句都以分号“;”结束。5、程序的输入与输出程序所完成的输入输出功能都是通过“Console”来完成的,“Console”是在名字空间“System”中已经定义好的一个类,你根本不需要管它是怎么完成工作的,只要直接使用它就可以了。上面的程序代码中,类“Console”为我们展现了一个最基本的方法:WriteLine,用于在输出设备中输出,还有一个较常用的方法是ReadLine。Console.ReadLine表示接受输入设备输入。6.添加注释C#中注释的方式和C、C+没有什么区别,每行中双斜杠“/”后面的内容,以及在分割符“/*”和“*/”之间的内容都将被编译器忽略。其中,“/”表示进行单行注释;“/*”和“*/”表示多行注释。注:在C中添加注释与解除注释时,可利用工具栏上的按钮。7、标识符C#中的标识符有以下规则:(1)以字母或下划线开头,后面可以是字母、数字或下划线。(2)严格区分大小写(3)关键字也可以作为标识符,但要在关键字前加上符号。1.2.3 .NET集成开发环境的使用技巧1、利用.NET集成开发环境的优越性智能提示。2、显示行号:工具/选项文本编辑器C#,选中“行号”3、设置断点:4、注释/取消注释5、排版1.2.4 程序的编译 命令行编译对C源程序,默认扩展名为.CS,可使用记事本或.NET环境编辑得到。在使用命令行编译时,使用的编译器是:C:WINDOWSMicrosoft.NETFrameworkv2.0.50727csc.exe下面以编译file.cs为例:1、编译file.cs生成file.exe:csc file.cs2、编译file.cs生成file.dll:csc /target:library file.cs3、仅编译file.cs,但不生成可执行文件:csc /nooutput file.cs4、编译file.cs生成my.exe:csc /out:my.exe file.cs一般经过编译后得到一exe文件,但要注意,此时产生的exe文件是一个由中间语言(IL:Intermediate Language)、元数据(Metadata)和一个额外的被编译器添加的目标平台的标准可执行文件头组成的PE(portable executable,可移植执行体)文件,而不是传统的二进制可执行文件,我们称之为受管代码(Managed Code),这些代码不专用于任何一种操作系统,在执行时,通过即时编译器JIT(Just-In-Time)编译成原始的可执行代码。 利用菜单编译并执行程序利用“调试”菜单。1.3 控制台输入输出操作控制台(Console)的输入输出操作主要是通过命名空间System中的类Console来实现的。输入操作主要有Read方法和ReadLine方法,输出操作主要有Write方法和WriteLine方法。1.3.1 Console.WriteLine方法功能:将信息输出到控制台,输出信息后换行。格式:Console.WriteLine(express)说明:在该方法中,可以采用N,M:格式化字符串的形式格式化输出字符串,其中各参数含义如下:用来在输出字符串中插入表达式的值。N:表示输出表达式的序号,从0开始,必须连续,当为0时,表示输出第一个表达式的值。M:输出表达式的值所占的列数。格式化字符串:指定数据按某种格式输出。如E为按科学计数法格式输出,X为按十六进制输出等。有如下几种:G常规,E 或 F 中较短的 F浮点数,常规表示法 E用 E 表示法表示的浮点数(其中,E 代表 10 的次幂) N带有分隔符的浮点数(在美国为逗号) C货币,带有货币符号和分隔符(在美国为逗号) D十进制数,仅用于整型 X十六进制数,仅用于整型 1.3.2 Console.Write方法功能:将数据到控制台,但不产生换行。其余同Console.WriteLine方法。1.3.3 Console.ReadLine方法功能:用来从控制台读取一行字符,遇到回车键结束,若没有任何输入则返回null。1.3.4 Console.Read方法功能:用来从控制台读取一个字符,并返回其对应的整数值,遇到回车键返回,若没有任何输入则返回-1。1.4 创建第一个Windows应用程序1.4.1 Windows桌面开发环境(IDE) Windows窗体设计器Windows窗体设计器是进行用户界面设计的主要工具。当创建一个新的Windows应用程序时,会产生一个空白窗体。当我们双击窗体中的任何一个位置,便会弹出代码设计器。 工具箱工具箱包含.net开发人员可以使用的所有控件集:1、可以使用其右上角的大头针将其固定。2、若不小心关闭了工具箱,可以选择“视图/工具箱”将其重新打开。3、向窗体中添加控件时,可以单某控件,再在窗体中按住鼠标拖动画出控件对象,也可双击控件,在窗体中生成。4、右击工具箱,可进行工具箱的其它设置。 服务器资源管理器服务器资源管理器是 Visual Studio .NET 的服务器管理控制台。使用服务器资源管理器打开数据连接,登录服务器,浏览它们的数据库和系统服务。可以将节点从服务器资源管理器拖放到 Visual Studio .NET 设计器上。这将创建新的数据组件,这些组件预配置为引用所拖放的项。 解决方案资源管理器解决方案资源管理器提供项目及其文件的有组织的视图,并且提供对项目和文件相关命令的便捷访问。若要访问解决方案资源管理器,请在“视图”菜单上选择“解决方案资源管理器”。 属性窗口属性窗口显示当前选中控件的属性及事件等信息,用户可以通过此窗口进行控件状态的设置及事件的设计等。当然也可通过代码进行。1.4.2 Windows应用程序举例例1:利用标签控件显示“欢迎进入C#编程世界!”。在设计时应该以下几个问题:(1)创建一个新项目时,我们可以创建多种类型的项目,因此一定要正确选择相应的项目类型。(2)创建一个新项目时,一定要注意新项目的保存位置,默认位置是“C:Documents and SettingsAdministratorMy DocumentsVisual Studio 2005”,如果不想保存在该文件夹下,则需设置目标文件夹。(3)创建一个新项目时,系统会在相应的位置创建一个新文件夹,和相应的文件。(4)当创建新对象时,对象名称构成一般如下:对象类型标志对象实际名称例2:图片浏览器1.5 创建第一个WEB应用程序演示,以后有后续课程,在此不详细讲解。第2章 C#编程基础2.1 变量与常量 相信你应该对变量和常量的概念再熟悉不过了,有关变量和常量的知识都是任何一门编程语言的基础知识,而每一门编程语言都有自己相对应的变量和常量的命名规则和使用方式。2.1.1 变量使用变量的一条重要的原则:变量必须先定义后使用,其声明方式同C+。静态变量:带有“static”修饰符声明的变量称为静态变量。一旦静态变量所属的类被装载,直到包含该类的程序运行结束时它将一直存在。静态变量就是该变量类型的默认值。静态变量最好是在定义时便赋值。如static a =10;非静态变量:不带有“static”修饰符声明的变量称其为实例变量。如int a;类中的非静态变量,一旦一个类的新的实例被创建,直到该实例不再被应用从而所在空间被释放为止,该非静态变量将一直存在。同样鉴于定义赋值检查,一个类的非静态变量也应该是在初始化的时候赋值。注:静态变量与非静态变量的区别:静态变量只需分配一次,且只能通过数“类名.变量名”的格式进行访问。而实例变量则随着对象的创建而被创建,且只能通过“对象名.变量名”的方式进行访问。例:using System;class StaticTestpublic static int sta1=10;public int a2=10;class StaticExamplepublic static void Main()StaticTest a,b;a=new StaticTest();b=new StaticTest();StaticTest.sta1=StaticTest.sta1+10;a.a2+=10;StaticTest.sta1=StaticTest.sta1+10;b.a2+=10;Console.WriteLine(StaticTest.sta1=0,a.a2=1,StaticTest.sta1,a.a2);Console.WriteLine(StaticTest.sta1=0,b.a2=1,StaticTest.sta1,b.a2);分析此程序中各变量的变化情况。局部变量:局部变量是指在一个独立的程序块中,一个for语句、switch语句或者using语句中声明的变量,它只在该范围内有效。当程序运行到这个范围内时,该变量即开始生效,程序离开时变量失效。与其他几种变量类型不同的是,局部变量不会自动被初始化,所以也就是没有默认值。在进行赋值检查时,局部变量被认为没有被赋值。在局部变量的有效范围内,在变量的定义以前就使用是不合法的,如果对局部变量超出了其作用范围,也是不合法的。如下面的代码:for(int I=0;I10;I+)int num=a; /这是非法的,因为局部变量a还没有被定义int a;int b=a;Num=10; /其访问超出了其作用范围2.1.2 常量所谓常量就是其值固定不变的量。从数据类型来讲,常量的类型可以是任何一种值类型或者是引用类型。一个常量的声明,就是声明程序中要用到的常量的名称和它的值,与变量一样,我们可以同时声明一个或者多个给定类型的常量。常量声明的格式如下: 修饰符 const 类型 常量名=常量值 其中:常量修饰符可以是:new、public、protected、internal、private。 常量的类型必须是下面中的一种: sbyte、byte、short、ushort、int、uint、ulong、char、float、double、decimal、bool、string或是引用类型(reference-type)。 如:public const double X=1.0,Y=2.0,Z=3.0;一般地,为了和变量想区别,常量用大写字母表示。2.2 数据类型C#支持两种主要类型,即值类型和引用类型。值类型可以分为:简单类型、结构类型、枚举类型;引用类型有四种:类、代表、数组和接口。(Unsafe类型,不提倡使用)2.2.1 值类型 简单类型简单类型是直接由一系列元素构成的数据类型。这些简单类型可分为:整数类型、布尔类型、字符类型和实数类型。 (1)整数类型 整数类型的变量的值为整数。C#中有九种整数类型:短字节型(sbyte)、字节型(byte)、短整型(short)、无符号短整型(ushort)、整型(int)、无符号整型(uint)、长整型(long)、无符号长整型(ulong)。C# 类型.NET Framework 类型描述表示范围sbyteSystem.Sbyte8-bit有符号整数类型-128127byteSystem.Byte8-bit无符号整数类型0255shortSystem.Int1616位有符号整数-3276832767ushortSystem.Uint1616位无符号整数065535intSystem.Int3232-bit 有符号整数类型-21474836482147483647uintSystem.Uint3232-bit无符号整数类型04294967295longSystem.Int6464-bit有符号整数类型-9223372036854775805 9223372036854775807ulongSystem.Uint6464-bit无符号整数类型018446744073709551615 (2)实数类型 浮点类型:数学中的实数不仅包括整数,而且包括小数。小数在C#中采用单精度(float)和双精度(double)。它们的差别在于取值范围和精度不同。 十进制类型(decimal):是C#专门为我们定义的一种高精度的数据类型,主要用于方便我们在金融和货币方面的计算。其范围小于浮点型,但精度比浮点型高,在数据的后面加上“m”,表示该数据是十进制类型。类型.NET Framework 类型精度大致范围floatSystem.Single(32位)7 位1.510-45 3.41038doubleSystem.double(64位)1516位5.010-324 1.710308decimalSystem.Decimal(128位)2829位1.010-28 7.91028 (3)字符类型(char型)除了数字以外,计算机还需要处理的信息主要就是字符了。字符包括数字字符、英文字符、表达符号等,C#提供的字符类型采用了国际公认的Unicode字符集标准。一个Unicode的标准字符长度为16位,用它可以表示大多数的字符类型了。注意:对字符常数,必须用单引号括起,且里面只能有一个字符。另外,我们还可以直接通过十六进制转义符(前缀x)或Unicode表示法给字符型变量赋值)(前缀u),用来在程序中指代特殊的控制字符。常用字符转义符字符集 a响铃n换行符 r回车符t制表符注意:在C中“”般作为转义字符使用,若不想作为转义字符使用,则在字符串前使用符号“”。如:string s = c:aaa。(4)布尔类型(bool型) 布尔类型是用来表示一个事件或状态的“真”和“假”。我们知道,不管任何数据,在计算机的内部都是采用二进制方式处理和存储。布尔类型表示的逻辑变量只有两种取值:“真”或“假”,在C#中分别采用“true”和“false”表示。注意:在C中布尔类型与整型数据间不能进行转换。值类型常量后缀:后缀限定的数据类型uuint或ulongllong或ulongul或luulongffloatddoublemdecimal 结构类型 在具体的程序设计中我们经常要把一组相关的信息存放在一起。把一系列相关的变量组织成为一个单一实体的过程,称为生成结构的过程。这个单一实体的类型我们就叫做结构类型,每一个变量称为结构的成员。结构类型的变量采用struct来进行声明。下面的程序代码说明定义一个通讯录记录结构(包括姓名、电话和地址)的定义。using System;using System.Runtime.InteropServices; namespace ConsoleApplication4struct PhoneBook public string name; public string phone; public string address;class Class1static void Main(string args) PhoneBook p1;=张三;p1.phone=6815000;p1.address=黑龙江八一农垦大学;Console.WriteLine(姓名:0 电话:1 家庭住址:2,,p1.phone,p1.address); p1就是一个通讯录(PhoneBook)结构类型的变量。上面声明中的“public”表示对结构类型的成员的访问权限。对结构成员的访问通过结构变量名加上访问符“.”号,后跟成员的名称: =tom; 结构类型包含的成员类型没有限制,可以相同也可不同。 值得注意的是:结构与类有很多相似之处,它可以声明构造器、常量、域、方法、属性、索引、操作符和嵌套类型等,但也有区别。如下:(1) 结构是值类型,而类是引用类型(2) 类可以被继承,但结构不能被继承(3) 结构无析构函数。 枚举类型枚举 (enum) 是值类型的一种特殊形式,它从 System.Enum 继承而来,并为基础基元类型的值提供替代名称,实际上是为一组在逻辑上密不可分的整数值提供便于记忆的符号。枚举类型有名称、基础类型和一组字段。基础类型必须是一个内置的有符号(或无符号)整数类型(如 Byte、Int32 或 UInt64)。字段是静态文本字段,其中的每一个字段都表示常数。同一个值可以分配给多个字段。下面的程序代码声明了一个代表星期的枚举类型的变量。 Enum WeekDay Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday ; WeekDay day; 注意:枚举类型的变量在某一时刻只能取枚举中某一个元素的值。如,day这个表示“星期”的枚举的变量,它的值要么是Sunday,要么是Monday或其他的星期元素,但它在一个时刻只能代表具体的某一天,不能既是星期二,又是星期三。 Day=Tuseday; 按照系统默认,枚举中的每个元素都是整型(int),且第一个元素的默认值为0,枚举值可以是不连续值,但它后面的每一个连续的元素的值总是在前一个元素值的基础上按加1递增。在枚举中,也可以给元素直接赋值。下面的程序代码把星期一的值设为1,其后的元素的值分别为2,3 using System;class Class1enum WeekDay Sunday,Monday=10,Tuesday,Wednesday,Friday,Saturday;static void Main(string args)Console.WriteLine(0,1,WeekDay.Sunday,(int)WeekDay.Sunday);Console.WriteLine(0,1,WeekDay.Monday,(int)WeekDay.Monday);Console.WriteLine(0,1,WeekDay.Wednesday,(int)WeekDay.Wednesday); 为枚举类型的元素所赋值的值的类型限于long、int、short和byte等整数类型。 可空类型可空类型是 System.Nullable 结构的实例。可空类型可以表示其基础值类型正常范围内的值,再加上一个 null 值。例如,Nullable,读作“可空的 Int32”,可以被赋值为 -2147483648 到 2147483647 之间的任意值,也可以被赋值为 null 值。可空类型可通过下面两种方式中的一种声明:System.Nullable variable - 或 -T? variable 例:int? k ; k = null; k = 100; Console.WriteLine(k);可空类型的每个实例都具有两个公共的只读属性:HasValue和Value,通过HasValue属性可以判断该实例是否为空,通过Value属性可取出该实例的值。2.2.2 引用类型 在这里,引用的含义是该类型的变量不直接存储所包含的值,而是指向它所要存储的值。即引用类型存储实际数据的引用值的地址。值类型内存分配在堆栈中,而引用类型,实际内存则分配在堆中,但在堆栈中创建一个引用变量,其值为堆中实际引用的地址。C#中的引用类型有四种:类、代表、数组和接口。using System;class Class1 public int value=0;class Testpublic static void Main()int val1=0;int val2=val1; /值类型,内存分配在堆栈中val2=123;Class1 ref1=new Class1();/引用类型,内存分配在堆中Class1 ref2=new Class1();ref2=ref1;ref2.value=123;Console.WriteLine(values:0,1,val1,val2);Console.WriteLine(references:0,1,ref1.value,ref2.value);012320002000123堆栈堆Val1Val2ref1ref2New class1().value2000类class1的一个实例(对象)类class1的实例的地址 类 类是面向对象编程的基本单位,是一种包含数据成员、函数成员和嵌套类型的数据结构。类的数据成员有常量、域和事件。函数成员包括方法、属性、索引指示器、运算符等。类和结构同样都包含了自己的成员,但它们之间最主要的区别在于:类是引用类型,而结构是值类型。 类支持继承机制,通过继承,派生类可以扩展基类的数据成员和函数成员,进而达到代码重用和设计重用的目的。下面介绍两个经常用到的类:object类:它是所有其他类型的基类,C#中的所有类型都直接或是间接地从object类中继承。因此,对一个object的变量可以赋予任何类型的值。 Int x=25; object obj1; obj1=x; object obj2=A; 对object类型的变量声明采用object关键字,这个关键字是在.NET平台中为我们提供的预定义的名字空间System中定义的,是类System.Object的别名。String类:称为字符串类型,专门用于对字符串的操作,字符串必须用“”括起。同样,这个类也是在.NET平台中为我们提供的预定义的名字空间System中定义的,是类System.String的别名。 字符串在实际中应用非常的广泛,在类的定义中封装了许多内部的操作,我们只要简单地加以利用就可以了。可以用加号“+”合并两个字符串,采用下标从字符串中获取字符等。 String String1=Welcome; string String2=Welcome+everyone; char c=String10;/可以使用数组的方式去访问其中的每一个字符 bool b=(String1=String2); 代表(委托) 在C#中取消了C和C+中的指针的这个概念。而代表(委托)实际上相当于是C#中的函数指针原型,与指针不同的是,代表在C#中是类型安全的。 数组 在进行批量处理数据的时候,我们要用到数组。数组是一组类型相同的有序数据。数组按照数组名、数据元素的类型和维数来进行描述。C#中提供Ststem.Array类是所有数组类型的基类。 接口 接口定义了一个协议(conrtact)。一个类或结构要实现接口就必须坚持这种协议。接口可以包括方法、属性、索引和事件作为成员。下面的程序代码说明了一个接口,它包含一个索引、一个事件E、一个方法F和一个属性P。2.2.3 隐式类型VAR类型VAR 是3.5新出的一个定义变量的类型,其实也就是弱化类型的定义,VAR可代替任何类型(可变类型),编译器会根据上下文来判断你到底是想用什么类型。至于什么情况下用到VAR 我想就是你无法确定自己将用的是什么类型时就可以使用VAR类型,类似 OBJECT但是效率比OBJECT高。使用var定义变量时有以下四个特点:1. 必须在定义时初始化。也就是必须是var s = “abcd”形式,而不能是如下形式:var s;s = “abcd”;2. 一但初始化完成,就不能再给变量赋与初始化值类型不同的值了。3. var要求是局部变量。4. 使用var定义变量和object不同,它在效率上和使用强类型方式定义变量完全一样。2.2.4 类型转换不同的数据类型在一定条件下是可以相互转换的,转换的方法有: 隐式转换隐式转换即由系统进行的转换。能进行隐式转换的数据类型下表。类型可以隐式转换成的数据类型boolobjectbytedecimal,double,float,int,uint,long,ulong,object,short,ushortsbytedecimal,double,float,int,long,object,shortchardecimal,double,float,int,uint,long,ulong,object,ushortdecimalobjectdoubleobjectfloatdouble,objectintdecimal,double,float,long,objectuintdecimal,double,float,long,ulong,objectlongdecimal,double,float,objectulongdecimal,double,float,objectshortdecimal,double,float,int,long,objectushortdecimal,double,float,int,uint,long,ulong,objectusing System;class Class1static void Main(string args)int i=10;byte j=20;short k=34;/若short k=I;则出现错误,不能进行隐式转换int a=j;float b=i;double c=k;Console.WriteLine(a=0,b=1,c=2,a,b,c); 显示转换格式:(类型标识符)表达式显式转换即由用户进行强行转换。能进行显式转换的数据类型参见MSDN。例:(int)10.24; Double x=10.6; Short y=(short)x 使用Convert类进行转换该类用于将一个基本数据类型转换为另一个基本数据类型。其常用方法如下表:ToBase64CharArray 将 8 位无符号整数数组子集的值转换为等效的由以 64 为基的数字组成的 Unicode 字符数组子集。参数将子集指定为输入和输出数组的偏移量和输入数组中的元素数。ToBase64String 将 8 位无符号整数数组的值转换为它的等效 String 表示形式(由以 64 为基的数字组成)。ToBoolean 将指定的值转换为等效的布尔值。ToByte 将指定的值转换为 8 位无符号整数。ToChar 将指定的值转换为 Unicode 字符。ToDateTime 将指定的值转换为 DateTime。ToDecimal 将指定值转换为 Decimal 数字。ToDouble 将指定的值转换为双精度浮点数字。ToInt16 将指定的值转换为 16 位有符号整数。ToInt32 将指定的值转换为 32 位有符号整数。ToInt64 将指定的值转换为 64 位有符号整数。ToSByte 将指定的值转换为 8 位有符号整数。ToSingle 将指定的值转换为单精度浮点数字。ToString 将指定值转换为其等效的 String 表示形式。ToUInt16 将指定的值转换为 16 位无符号整数。ToUInt32 将指定的值转换为 32 位无符号整数。ToUInt64 将指定的值转换为 64 位无符号整数。 使用Parse方法进行转换格式:type.Parse(stringtype)功能:将数字的字符串表示形式转换为它的等效的数值型数据。例: string s=123;int x=int.Parse(s);double y=double.Parse(Console.ReadLine(); 使用ToString()方法进行转换当我们将其它类型的数据转换为string型时,可以使用object类的ToString()方法。此方法经常使用,必须记住。格式:数据.ToString();例:double xx=10.89;bool yy=true;Console.WriteLine(123+xx.ToString()+yy.ToString();2.2.5 装箱和拆箱在面向对象的编程语言中,我们通常使用的是对象。但为了提高速度,C#也提供了简单数据类型。因此,C#程序既包含一大堆的对象,又有大量的值。在这种环境下,让这两者协同工作始终是一个不可回避的问题,你必须要有一种让引用和值进行通信的方法。 在C#以及.NET运行时环境中,这个“通信”问题通过装箱(Boxing)和拆箱(Unboxing)解决。装箱是一种让值类型看起来象引用类型的处理过程。当一个值类型(简单数据类型)被用于一个要求或者可以使用对象的场合时,装箱操作自动进行。装箱一个value-type值的步骤包括:分配一个对象实例,然后把value-type值复制到对象实例。 拆箱所执行的动作与装箱相反,它把一个引用类型转换成值类型。拆箱操作的步骤包括:首先检查并确认对象实例确实是给定value-type的一个经过包装的值,然后从对象实例复制出值。因此我们也可认为装箱和拆箱是值类型和引用类型的转换。 装箱在进行装箱转换时,有隐式转换和显示转换两种。例:隐式转换int intI = 123;object o = intI; / Boxing例:显式转换int intI = 123;object o = (object)intI; / Boxing 拆箱例:int intI = 123;object o = (object)intI; / Boxingint k=(int)o /Unboxing例:/ boxing.cs/ Boxing an integer variableusing System;class TestBoxing public static void Main() int i = 123; /装箱 object o = i; / Implicit boxing i = 456; / Change the contents of i int j=(int)o; /拆箱Console.WriteLine(The value-type value = 0, i);Console.WriteLine(The object-type value = 0, o);Console.WriteLine(The value-type value = 0, j); 2.3 运算符和表达式2.3.1 运算符 运算符及其优先级优先级种类操作符1初级的(x) x.y f(x) ax x+ x- newtypeof sizeof checked unchecked2一元的+ - ! +x -x (T)x3乘法的* / %4加法的+ -5移位6关系的 = is7相等的= !=8逻辑与&9逻辑异或当且仅当表达式的一边为真时才为真10逻辑或|11条件与&12条件或|13条件的?:14赋值= *= /= %= += -= = &= = |=说明:1、new:用于创建对象和调用构造函数,例如:Class1 MyClass = new Class1();也用于为值类型调用默认的构造函数,例如:int myInt = new int();2、typeof:用于获得某一类型的System.Type类型。3、sizeof:获得值类型数据在内存中占用的字节数,仅适用于 unsafe 模式,在程序编译时也使用/unsafe选项。using System;class SizeClass unsafe static void Main() Console.WriteLine(The size of short is 0., sizeof(double);Console.WriteLine(The size of int is 0., sizeof(int);Console.WriteLine(The size of long is 0., sizeof(long);4、checked/unchecked:用于控制整型算术运算和转换的溢出检查/忽略。using System;class
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度企业职工文体活动中心使用权转让合同
- 2025年SAP应用部署及云资源优化管理合同
- 2025年城市轨道交通电气设备采购与维护合作协议
- 2025年新型车棚钢结构研发、生产、安装及售后保障合同
- 2025年老旧小区改造合同涉及水电改造及室内外装饰装修
- 2025年度高端酒店特色美食供应与配送合同范本
- 2025年大型吊装设备租赁与保养维修全面合作协议
- 2025年艺术类高考考前专业培训及考试备考辅导服务协议
- 2025年高端商务用车驾驶与定期维护保养服务协议
- 2025年绿色物流企业智能仓储信息化建设合作协议
- 加油、加气、充电综合站项目可行性研究报告
- 2025保密协议范本:物流行业货物信息保密
- 塔机拆卸合同范本
- 2024-2025学年广东省深圳市南山区四年级(下)期末数学试卷
- 《煤矿安全规程(2025版)》知识培训
- 2025秋数学(新)人教五年级(上)第1课时 小数乘整数
- 半导体行业面试问题及答案解析
- 《数字技术应用基础模块》技工中职全套教学课件
- 房屋拆除专项施工方案(3篇)
- AutoCAD电气工程制图 课件 项目1 低压配电柜的绘制与识图
- 2025至2030年中国绿色船舶行业发展前景预测及投资方向研究报告
评论
0/150
提交评论