ImageVerifierCode 换一换
格式:DOCX , 页数:45 ,大小:40.55KB ,
资源ID:20386386      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20386386.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C#基础知识解读Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C#基础知识解读Word文件下载.docx

1、5. 值类型变量的值不能为null,必须有有一个确定的值6. 值类型是从System.ValueType类继承而来,C#中值类型也包括结构类型和引用类型值类型和引用类型的区别:值类型的变量直接包含数据,而引用类型的变量存储对数据的引用。B 对象转换1. 隐式转换(不会丢失数据),不存在Char类型的隐式转换,因此其他类型不会自动转换为Char类型2. 显示转换,包括所有隐式和显示转换,总是可以使用强制转换表达式从任何数值类型到任何其他数值类型,显示转换是不安全的,可能导致数据丢失3. 装箱和拆箱装箱:将值类型转换为引用类型;拆箱:将引用类型转换为值类型从任何“值类型”到类型object 从任何

2、“值类型”到类型System.ValueType 从任何“值类型”到“值类型”实现的任何“接口类型” 从任何“枚举类型”到System.Enum类型将一个值类型变量v装箱为一个引用类型o时,需要进行如下的几步操作:1. 在托管堆创建一个对象实例o,给它分配内存2. 将v的值复制到对象实例o中3. 将o的地址压入堆栈中,此时它指向一个引用类型Using System;Class BoxingPublic static void Main() int i = 10; object obj = i; Console.WriteLine(“1.值为0,装箱对象为1”,i ,obj); i = 20;

3、Console.WriteLine(“2.值为0,装箱对象为1”,i ,obj);运行结果:1. 值为10,装箱对象为102. 值为20,装箱对象为10 从类型object到任何类型 从类型System.ValueType到任何值类型 从任何接口类型到实现了该类型的任何值类型 从System.Enum类型到任何枚举类型拆箱包括两个步骤:首先检验该对象实例是否是某个给定的值类型的装了箱的值,然后将值从实例中复制出来,并赋值给值类型变量。Class Unboxing Public static void Main() Int i = 10; Object obj = i; Console.Writ

4、eLine(“ 装箱:值为0,装箱对象为1”,i,obj); int j = (int)obj; /double j = (double)obj; Console.WriteLine(“拆箱:装箱对象为0,值为1”,obj,j);结果为:值为10,装箱对象为10装箱对象为10,值为10注意:拆箱必须符合类型一致原则可空类型:以值类型为基础类型来构造的,可空类型的基础类型必须是非可空的值类型。可空类型可以表示基础类型的所有值和一个额外的空值,可空类型的实例有两个公共只读属性:HasValue 为true表示实例为非空;Value表示可空类型的基础类型值。例:int ?x; int ?y = nu

5、ll;包装与解包包装就是将T类型的值打包在类型T?的实例中,例: = 123;解包就是获取包含在类型T?的实例中的类型为T的值的过程,例:int i = 123; x = i;类的转换1.隐式转换从任何引用类型到object类从任何类S到任何类T(S是从T派生的)从任何类S到任何接口T(S实现了T)从任何接口S到任何接口T(S是从T派生的)从null到任何引用类型2显式转换从object到任何其他引用类型从任何类S到任何接口T(S未密封并且S不实现T)从任何接口S到任何类T(T为密封或T实现S)从任何接口S到任何接口T(S不是从T派生的)is运算符用于动态检验对象的运行时类型是否与给定类型兼容

6、as运算符用于将一个对象显示地转换为一个给定的引用类型,与强制转换不同,as运算符不发生异常。它的规则是:如果指定的转换不可能实施,则运算结果为null2.集合A ListB Dictionary集合集合是基于System.Colletion.ICollection接口、System.Collection.IList接口、System.Collection.IDictionary接口来实现的。IList接口和IDictionary接口都是从ICollection接口派生的。对于基于IList接口的集合(如Array、ArrayList、List)或者直接基于ICollection接口的集合(如

7、Queue、Stack、LinkedList)来说,每个元素只有一个值。对于基于IDictionary接口的集合来(如Hashtable和SortedList类)来说,每个元素都包含一个键和一个值。System.Collection.ICollection继承了System.Collections.IEnumerable,而IEnumerable接口仅仅包含一个名为GetEnumerator的方法,返回一个能够访问集合中数组的列举器对象。对象类型的集合位于System.Collections命名空间;泛型集合类位于System.Collection.Generic命名空间;专用于特定类型的集合

8、类位于System.Collection.Specialized命名空间。集合可以根据集合执行的接口组合为列表、集合和字典。1.列表创建列表:List intList = new List racers = new List /Racer:类使用Capacity属性可以获取和设置集合的容量:intList.Capacity = 20;集合中元素的个数可以用Count属性读取。只要不把元素添加到列表中,元素个数就是0;如果已经将元素添加到列表中,且不希望添加更多的元素,就可以调用TrimExcess()方法,去除不需要的容量。但是如果元素个数超过容量的90%,TrimExcess()将什么也不做

9、。初始化:List intList = new List stringList = new List () one, two;添加元素:List intList = new List(); intList.Add(1); intList.Add(2);List stringList = new List();stringList.Add(); stringList.Add(Racer graham = new Racer(GrahamHillUK, 14); /Racer是类Racer emerson = new Racer(EmersonFittipaldiBrazilRacer mario

10、 = new Racer(MarioAndrettiUSA, 12);List racers = new List(20); graham, emerson, mario;racers.Add(new Racer(MichaelSchumacher,Germany, 91);MikaHakkinenFinland, 20);racers.AddRange(new Racer new Racer(NikiLaudaAustria, 25)new Racer(AlianProstFrance, 51 );List racers = new List (new Racer new Racer(Joc

11、henRindt, 6)AyrtonSenna, 41 ); racers. Insert(3, new Racer(Phil, 3);访问元素:foreach (Racer r in racers)Console.WriteLine(r); List还提供了ForEach()方法,它用Action参数声明public void ForEach(Action action);public class List : IList private T items;/.public void ForEach(Action action)if (action = null) throw new Argu

12、mentNullException(actionforeach (T item in items)action(item);为了给ForEach传送一个方法,Action声明为一个委托,它定义了一个返回类型为void、参数为T的方法。public delegate void Action(T obj); racers.ForEach(Console.WriteLine);删除元素:racers. RemoveAt(3); /删除第四个元素方法RemoveRange()可以从集合中删除许多元素。它的第一个参数指定了开始删除的元素索引,第二个参数指定了要删除的元素个数。int index = 3;

13、int count = 5;racers. RemoveRange (index, count) 要从集合中删除有指定特性的所有元素,可以使用RemoveAll()方法搜索: IndexOf(),如果在集合中找到该元素,这个方法就返回该元素的索引。如果没有找到该元素,就返回-1;int index1 = racers. IndexOf(mario);搜索有某个特性的元素,该特性可以用FindIndex()方法来定义。FindIndex()方法需要一个Predicate类型的参数:public int FindIndex(Predicate match); Predicate r.Country

14、 = 还有Find(),FindLast(),FindAll();排序:racers. Sort();类型转换:使用List类的ConvertAll()方法,可以把任意类型的集合转换为另一种类型 List persons = racers. ConvertAll new Person(r.Firstname + +r.Lastname);2.队列Queue和Queue 类的成员说 明Enqueue()在队列一端添加一个元素Dequeue()在队列的头部读取和删除一个元素。如果在调用Dequeue()方法时,队列中不再有元素,就抛出InvalidOperationException异常Peek(

15、)在队列的头部读取一个元素,但不删除它Count返回队列中的元素个数TrimExcess()重新设置队列的容量。Dequeue()方法从队列中删除元素,但不会重新设置队列的容量。要从队列的头部去除空元素,应使用TrimExcess()方法Contains()确定某个元素是否在队列中,如果是,就返回trueCopyTo()把元素从队列复制到一个已有的数组中ToArray()ToArray()方法返回一个包含队列元素的新数组3. 栈Statck和StatckPush()在栈顶添加一个元素Pop()从栈顶删除一个元素,并返回该元素。如果栈是空的,就抛出InvalidOperationExceptio

16、n异常返回栈顶元素,但不删除它返回栈中的元素个数确定某个元素是否在栈中,如果是,就返回true把元素从栈复制到一个已有的数组中。ToArray()方法返回一个包含栈中元素的新数组Stack alphabet = new Stackalphabet.Push(ABCforeach (char item in alphabet) Console.Write(item);4. 链表LinkedList是一个双向链表,其元素指向它前面和后面的元素LinkedListNode的属性List返回与节点相关的LinkedListNext返回当前节点之后的节点。其返回类型是LinkedListNodePrev

17、ious返回当前节点之前的节点Value返回与节点相关的元素,其类型是TLinkedList的成员返回链表中的元素个数First返回链表中的第一个节点。其返回类型是LinkedListNode。使用这个返回的节点,可以迭代集合中的其他节点Last返回链表中的最后一个元素。使用这个节点,可以逆序迭代集合中的其他节点AddAfter()AddBefore()AddFirst()AddLast()使用AddXXX方法可以在链表中添加元素。使用相应的Add方法,可以在链表的指定位置添加元素。AddAfter()需要一个LinkedListNode对象,在该对象中可以指定要添加的新元素后面的节点。Add

18、Before()把新元素放在第一个参数定义的节点前面。AddFirst()和AddLast()把新元素添加到链表的开头和结尾重载所有这些方法,可以添加类型LinkedListNode或类型T的对象。如果传送T对象,则创建一个新LinkedListNode对象Remove()RemoveFirst()RemoveLast()Remove()、RemoveFirst()和RemoveLast()方法从链表中删除节点。RemoveFirst()删除第一个元素,RemoveLast()删除最后一个元素。Remove()需要搜索一个对象,从链表中删除匹配该对象的第一个节点Clear()从链表中删除所有的

19、节点在链表中搜索一个元素,如果找到该元素,就返回true,否则返回falseFind()从链表的开头开始搜索传送给它的元素,并返回一个LinkedListNodeFindLast()与Find()方法类似,但从链表的结尾开始搜索documentList = new LinkedList();priorityNodes = new List(10);for (int i = 0; i 10; i+) priorityNodes.Add(new LinkedListNode(null);5. 有序表如果需要排好序的表,SortedListSortedList books = new SortedL

20、istbooks.Add(.NET 2.0 Wrox Box978-0-470-04840-5Professional C# 2005 with .NET 3.0978-0-470-12472-7可以使用foreach语句迭代有序表。枚举器返回的元素是KeyValuePair类型,其中包含了键和值。键可以用Key属性访问,值用Value属性访问。foreach (KeyValuePair book in books) Console.WriteLine(0, 1, book.Key, book.Value);类的属性,如下表所示:SortedList的属性Capacity 使用Capacity

21、属性可以获取和设置有序表能包含的元素个数。该属性与List类似:默认构造函数会创建一个空表,添加第一个元素会使有序表的容量变成4个元素,之后其容量会根据需要成倍增加ComparerComparer属性返回与有序表相关的比较器。可以在构造函数中传送该比较器。默认的比较器会调用IComparable接口的CompareTo()方法来比较键。键类型执行了这个接口,也可以创建定制的比较器Count属性返回有序表中的元素个数Item使用索引器可以访问有序表中的元素。索引器的参数类型由键类型定义KeysKeys属性返回包含所有键的IListValuesValues属性返回包含所有值的IList类的方法:S

22、ortedList的方法Add()把带有键和值的元素放在有序表中RemoveAt()Remove()方法需要从有序表中删除的元素的键。使用RemoveAt()方法可以删除指定索引的元素删除有序表中的所有元素ContainsKey(),ContainsValue()ContainsKey()和ContainsValue()方法检查有序表是否包含指定的键或值,并返回true或false IndexOfKey(),IndexOfValue()IndexOfKey()和IndexOfValue()方法检查有序表是否包含指定的键或值,并返回基于整数的索引重新设置集合的大小,将容量改为需要的元素个数Try

23、GetValue()使用TryGetValue()方法可以尝试获得指定键的值。如果键不存在,这个方法就返回false。如果键存在,就返回true,并把值返回为out参数6. 字典1. Dictionary字典表示一种非常复杂的数据结构,这种数据结构允许按照某个键来访问元素。字典也称为映射或散列表。字典的主要特性是能根据键快速查找值。也可以自由添加和删除元素,这有点像List,但没有在内存中移动后续元素的性能开销。可以使用的最主要的类是Dictionary。这个类的属性和方法与上面的SortedList几乎完全相同,用作字典中键的类型必须重写Object类的GetHashCode()方法。只要字

24、典类需要确定元素的位置,就要调用GetHashCode()方法。GetHashCode()方法返回的int由字典用于计算放置元素的索引。public struct EmployeeId : IEquatable private readonly char prefix; private readonly int number; public EmployeeId(string id) if (id = null) throw new ArgumentNullException(id prefix = (id.ToUpper()0; int numLength = id.Length - 1;

25、number = int.Parse(id.Substring(1, numLength 6 ? 6 : numLength); public override string ToString() return prefix.ToString() + string.Format(0,6:000000, number); public override int GetHashCode() return (number number 16) * 0x15051505; public bool Equals(EmployeeId other) return (prefix = other.prefix & number = other.number);public class Employee private string name; private decimal salary; private readon

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1