![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C# Basic
中辽普坦
知福、惜福!活在当下,幸福当下(Share my knowledge with the world.)
展开
-
IEnumerable和IEnumerator 详解
初学C#的时候,老是被IEnumerable、IEnumerator、ICollection等这样的接口弄的糊里糊涂,我觉得有必要切底的弄清楚IEnumerable和IEnumerator的本质。下面我们先看IEnumerable和IEnumerator两个接口的语法定义。其实IEnumerable接口是非常的简单,只包含一个抽象的方法GetEnumerator(),它返回一个可用于循环访问集原创 2011-10-13 23:22:29 · 172101 阅读 · 19 评论 -
栈和队列
栈是与队列非常类似的另一个容器,只是要使用不同的方法访问栈。最后添加到栈的元素会最先读取。栈是一个后进先出(LIFO)容器。与Queue类相同,非泛型栈Stack也执行了ICollection、IEnumerable和ICloneable接口;泛型类Stack实现了IEnumerable、ICollection和IEnumerable接口。 队列是其元素以先进先出(FIFO)的方式来处原创 2011-10-17 21:01:45 · 772 阅读 · 0 评论 -
Properties属性
在C#中为类定义属性是件再简单不过的事,如下所示(1-1):using System;namespace PropertiesDemo{ public class MyData { .......... } public class Class1 { private MyData d原创 2012-01-09 20:39:38 · 626 阅读 · 0 评论 -
泛型的优点
一、性能泛型的一个主要优点是性能。对值类型使用非泛型集合类,在把值类型转换为引用类型和把引用类型转换为值类型时,需要进行装箱和拆箱操作。下面是System.Collections命名空间中的ArrayList类。ArrayList存储对象,Add()方法定义为需要把一个对象作为参数。因此,要Add一个整数类型的参数,就要进行装箱操作。在读取ArrayList中的值时,要进行拆箱,把对象转换原创 2010-10-17 18:22:00 · 1215 阅读 · 0 评论 -
Convert.ToInt32、(int)和int.Parse三者的区别
Convert.ToInt32、(int)和int.Parse三者的区别前者适合将object类类型转换成int类型,如Convert.ToInt32(session["shuzi"]);(int)适合简单数据类型之间的转换;int.Parse适合将string类类型转换成int类型,如int.Parse(session["shuzi"].ToString())。原创 2011-10-09 10:39:34 · 653 阅读 · 0 评论 -
C#泛型列表List基本用法总结
在决定使用List 还是使用ArrayList 类(两者具有类似的功能)时,记住 List 类在大多数情况下执行得更好并且是类型安全的。如果对List 类的类型 T 使用引用类型,则两个类的行为是完全相同的。但是,如果对类型T 使用值类型,则需要考虑实现和装箱问题。想二维数组和一维数组那样能用好多方法,在这里可以实现:那就是利用泛型List。举个例子: ist> array1转载 2010-10-17 17:31:00 · 1003 阅读 · 0 评论 -
DateTime.Now.Ticks和生成随机数
1秒等于1000毫秒,以下单位是微秒、纳秒(=10亿秒)、皮秒、飞秒,均是千位进制。为什么生成随机数时:Random ran = new Random((int)DateTime.Now.Ticks); 要用DateTime.Now.Ticks,DateTime.Now.Ticks的意义是什么?获取表示此实例的日期和时间的刻度数。 ---是什么意思计算机的“随机数”并非真的“随机数原创 2011-12-21 10:39:27 · 7904 阅读 · 0 评论 -
c#循环中产生伪随机数
在循环中产生多个随机数,容易出现连续相同的数据,最终的多个随机数并不随机,而是带有某种规律性。这种结果的原因在于,Random()函数的默认种子是时间,但在循环中产生随机数时,由于运算速度太快,用做种子的时间是相同的(毫秒级),因此产生的随机数序列是相同的,这样最终的随机数就会相同。(基于“线性同余法”的随机数发生器)解决方法是,产生一个全局唯一标识符,使用它的哈希值来做种子产生随机数。代原创 2011-12-21 12:50:52 · 944 阅读 · 0 评论 -
C#正则表达式编程(四):正则表达式
正则表达式提供了功能强大、灵活而又高效的方法来处理文本。正则表达式的全面模式匹配表示法使您可以快速分析大量文本以找到特定的字符模式;提取、编辑、替换或删除文本子字符串;或将提取的字符串添加到集合以生成报告。对于处理字符串(例如 HTML 处理、日志文件分析和 HTTP 标头分析)的许多应用程序而言,正则表达式是不可缺少的工具。正则表达式是一个非常有用的技术,有人曾称之为能让程序员不至于丢掉饭碗的十转载 2011-12-10 20:18:25 · 722 阅读 · 0 评论 -
C#正则表达式编程(二):Regex类用法
上一篇讲述了在C#中有关正则表达式的类之间的关系,以及它们的方法,这一篇主要是将Regex这个类的用法的,关于Match及MatchCollection类会在下一篇讲到。对于正则表达式的应用,基本上可以分为验证、提取、分割和替换。仅仅利用Regex类就可以实现验证和简单替换。利用Regex类实现验证经历2009年的备案和DNS停止解析风波之后,大部分的带有反馈性的网站和论坛都对一些敏感转载 2011-12-10 20:05:08 · 713 阅读 · 0 评论 -
Motherboard Production Process Flow
1、SMT-Print(印刷位):通過焊膏印刷机把焊膏印刷在PCB板相应的位置上。2、SMT-Measuring Solder Paste Thinckness:測量焊錫膏的厚度。3、SMT-Materials on Machine and NXT Placement Component:上料&NXT貼片4、SMT-Middle station Inspection:中間位檢查5、原创 2011-02-22 10:25:00 · 820 阅读 · 0 评论 -
泛型方法经典解释
首先让我们回忆一下,什么是方法,方法由方法名、括号和方法的参数组成。那么泛型方法,也应该有方法名和括号,但在方法名和括号之间加了一个类型参数,括号中也可以带有方法参数,我们把这种形式的方法称为泛型方法。那么泛型方法有什么用呢?由于有类型参数的存在,这就注定泛型方法就是某种特定方法的模板,由于类型参数的存在,这就使泛型方法抽象了一个层次。我们把它称为某一种特定方法的模板,直到真正使用类型进行确定泛型原创 2011-06-15 11:58:00 · 970 阅读 · 0 评论 -
C# List排序Sort
List类可以使用Sort()方法对元素排序。Sort()方法定义了几个重载方法,分别是 public void List.Sort(),不带有任何参数的Sort方法 public void List.Sort(Comparison),带有比较代理方法参数的Sort方法 public void List.Sort(IComparer), 带有比较器参数的Sort方法原创 2012-07-20 17:08:46 · 22099 阅读 · 1 评论 -
c#中get set 的使用
在早期学习c#的过程中,经常遇到这样的语句:public string StudentName { get{return stuName;} set{stuName=value;} }当时也不是很明白为什么要这样?学深了c#后,又没法对其做一个总结。今天看了《Visual c#.net程序设计教程》这本书,总结得不错,做下笔记:在许多面向对象程序设计语转载 2010-07-04 20:25:00 · 5152 阅读 · 0 评论 -
通过实例,理解base和this关键字
/// /// 从ParaInfo这个类中,让我明白到base与this的区别,很明显,base用在继承,而this可以用在串联构造函数调用 /// [Serializable] public class ParaInfo { public string Name { get; set; } public object V原创 2010-04-24 13:17:00 · 1092 阅读 · 1 评论 -
default(T) 和 typeof 和 GetType()
一、default(T) 在泛型编成中如果不限制T类型参数是值类型或引用类型的话 你程序内部可能会出现错误,因为值类型不允许NULL.所以default用来获取一个类型的默认值,对于值类型得到new T() 基本得到的都是0;对于引用类型会得到Null或者你不使用Default关键词,自己通过反射得到T是指类型还是引用类型 然后设置默认值 二、1、比如说吧,你有两个类My转载 2012-03-19 17:59:06 · 2876 阅读 · 0 评论 -
Strong-Type Collection
在泛型类出现之前: 实现ICollection、IEnumerable、IList接口的目的是要创建对象与.NET Framework之间兼容互通的管道,但这样的做法却会引发另一个问题,那就是这些接口都使用object作为Collection中的元素类型,而.NET Framework所有的对象皆是源自object,这代表着用户可以放入所有对象于Collection对象中。往好的方面着眼,原创 2011-12-14 23:16:03 · 572 阅读 · 0 评论 -
IList
一个具备完整能力的Collection类必须实现IList接口,此接口提供了修改Collection内元素的能力.IList 是 ICollection 接口的子代,并且是所有非泛型列表的基接口。IList 实现有三种类别:只读、固定大小和可变大小。无法修改只读IList。固定大小的IList 不允许添加或移除元素,但允许修改现有元素。可变大小的IList 允许添加、移除和修改元素。原创 2011-10-25 23:20:53 · 2332 阅读 · 0 评论 -
接口
从广义上说,凡是一个类提供给外部使用的部分都可以被称为接口。但是在引入继承和抽象类之前,这个广义接口并没有太大的意义。广义接口的真正意义是在类的继承中体现多态的功能,这种接口又被称为抽象接口。狭义接口是指特定的函数集合,一般是用Interface声明的,它表示一个方法集合,这个集合被称为一个命名接口。一个命名接口中的方法必须在一个类中实现后才能被使用。一个类继承实现一个接口,称为这个类实现原创 2011-11-06 11:02:05 · 718 阅读 · 0 评论 -
ICollection
ICollection是IEnumerable的加强型接口,它继承自IEnumerable接口,提供了同步处理、赋值及返回内含元素数目的功能,MSDN解释:Defines size, enumerators, and synchronization methods for all nongeneric collections.定义所有非泛型集合的大小、枚举器和同步方法。(这原创 2011-10-16 17:03:21 · 3682 阅读 · 0 评论 -
C# NameValueCollection 初探
NameValueCollection继承于抽象类NameObjectCollectionBase ,NameObjectCollectionBase 的语法如下:public abstract class NameObjectCollectionBase : ICollection, IEnumerable, ISerializable, IDeserializationCallback转载 2010-11-09 15:12:00 · 1012 阅读 · 0 评论 -
C#正则表达式
正则表达式是一种用来描述和操作文本的强大语言。正则表达式主要用于字符串,即一组字符。这往往意味着一整篇文本文档。对字符串应用正则表达式的结果,要么是返回子串,要么返回一个新字符串,表示原字符串某部分的修改。(请记住字符串是不可变的,因此用正则表达式也改变不了。)通过对一下字符串应用正确物造的正则表达式: one,Two,Three Liberty Associates ,Inc.原创 2011-10-26 19:22:57 · 912 阅读 · 0 评论 -
params 关键字
方法参数关键字如果在为方法声明参数时未使用 ref 或 out,则该参数将具有与该方法相关的值。这个值在方法中能被更改,但当程序返回到调用过程时这种改动将不会被保留。通过使用方法参数关键字,可以更改这种情况。 4.1 params 关键字params 关键字可以指定在参数数目可变时带有参数参数的方法参数。在方法声明中的 params 关键字之后不允许引入任何其他参数(即原创 2010-04-24 18:30:00 · 835 阅读 · 0 评论 -
C#正则表达式编程(三):Match类和Group类用法
前面两篇讲述了正则表达式的基础和一些简单的例子,这篇将稍微深入一点探讨一下正则表达式分组,在.NET中正则表达式分组是用Math类来代表的。首先先看一段代码:view plaincopy to clipboardprint?/// /// 显示Match内多个Group的例子 /// public void ShowStructure() {转载 2011-12-10 20:15:09 · 725 阅读 · 0 评论 -
字典实体类:DictionaryEntry类
DictionaryEntry类是一个字典集合,主要包含的内容是键/值对。这种组合方式可以方便地定位数据,其中的“键”具备唯一性,类似于数据库中的“id”,一个id对应一天记录,而一个键只对应一个值。使用DictionaryEnry类可以方便地设置和检索数据。虽然被称为字典集合,但DictionaryEntry并不包含一组数据,而只是一个“键/值”对,一般通过“IDictionaryEnume原创 2010-08-09 22:09:00 · 6844 阅读 · 0 评论 -
什么是持久化(Persistence)
无论何时运行上面的SRS程序,我们声明和初始化的任意对像(或值类型)都会“存活”在内存中。当程序结束运行后,分配程序的所有内存将会被操作系统回收,应用程序创建的所有内部状态都会失去,除非以某种方式把它们保存起来——而且是永久性地保存起来。 利用不同的API,C#提供了多种可供选择的数据持久化方案。1、在System.Data、System.Data.Odbc和System.D原创 2011-11-13 01:45:20 · 4850 阅读 · 0 评论 -
字典
字典表示一种非常复杂的数据结构,这种数据机构允许按照某个键来访问元素。字典也称为映射或散列表。字典的主要特性是根据键快速查找值。也可以自由添加和删除元素,这有点想List,但没有在内存中移动后续元素的性能开销。.NET Framework提供了几个字典类。可以使用的最主要的类原创 2011-10-18 21:52:16 · 703 阅读 · 0 评论 -
IComparable接口和IComparer接口(一)
Array类实现了对数组中元素的冒泡排序。Sort()方法需要数组实现IComparable接口。简单类型,如System.String和System.Int32实现了IComparable接口,所以可以对包含这些类型的元素排序。 在下面例子中,数组name包含st原创 2011-10-11 20:34:22 · 930 阅读 · 0 评论 -
C# KeyValuePair 的基本用法及结合泛型的用法
C# KeyValuePair的用法。结构体,定义可设置或检索的键/值对。也就是说我们可以通过 它记录一个键/值对这样的值。比如我们想定义一个ID(int类型)和Name(string类型)这样的键/值对,那么可以这 样使用。 /// /// 设置键/值对///原创 2010-06-22 23:33:00 · 7530 阅读 · 0 评论 -
ICloneable接口(构建可克隆的对象)
System.Object定义了一个名为MemberwiseClone()的成员。这个方法用来获取当前对象的一份浅复制。因为它是受保护的,对象用户不会直接调用这个方法,而一个对象可能在克隆过程中自己调用这个方法。原创 2011-10-11 22:51:09 · 524 阅读 · 0 评论 -
类型转换的关键字explicit、implicit 和 operator
下面我主要介绍用于类型转换的关键字:explicit、implicit 和 operator。2.1 explicit关键字explicit 关键字用于声明必须使用强制转换来调用的用户定义的类型转换运算符。static explicit operator target_type { source_type identifier }参数:target_type原创 2010-04-24 14:15:00 · 964 阅读 · 0 评论 -
C#中通过Type类访问数据类型信息
Type 类表示类型声明:类类型、接口类型、数组类型、值类型、枚举类型、类型参数、泛型类型定义,以及开放或封闭构造的泛型类型。Type初始化 Type 类的新实例C#中通过Type类可以访问任意数据类型信息。1.获取给定类型的Type引用有3种方式: a.使用typeof运算符,如Type原创 2011-06-17 10:12:00 · 13010 阅读 · 2 评论 -
c#中取整和取余
"%"为取余号,不用多说。 <br /> "/"号现在整形运算是取整,浮点运算时为除法运算,如54/10结果为5,54.0/10.0结果为5.4而且取整时不进行四舍五入只取整数部分,如54/10和56/10是5. <br /> Math.Celling()取整数的较大数,相当于不管余数是什么都会进一位。如Math.Celling(54.0/10.0)结果为6. <br /> Math.Floor()取整数的较小数,相当于"/"号,即不管余数部分是什么都不进行进位。如Math.Floor(56.0/10转载 2010-06-25 21:37:00 · 63501 阅读 · 0 评论 -
KeyValuePair VS DictionaryEntry
KeyValuePair is used in place of DictionaryEntry because it is generified. The advantage of using a KeyValuePair is that we can give the compiler more information about what is in our dictionary. To e原创 2010-08-14 09:02:00 · 2062 阅读 · 0 评论 -
SortedList 详解
SortedList表示键/值对的集合,这些键值对按键排序并可按照键和索引访问。SortedList在内部维护两个数组以将数组存储到列表中;即,一个数组用于键,另一个数组用于相关联的值。每个元素都是一个可作为DictionaryEntry对象进行访问的键/值对。键不能为空引用(VisualBasic中为Nothing),但值可以。SortedList的容量是列表可拥有的元素数。随着向Sorte原创 2011-10-17 21:11:25 · 13987 阅读 · 0 评论 -
对象标识
在之前的博文中,提到两个群集类——ArrayList和Hashtable时,我们知道,当从群集中得到一个对象引用,需要把这个对象引用转换为合适的引用类型。有人可能会因此认为,对象不知为何会“忘记”自己属于哪个类,这是错误的认识。对象将始终记住它的类标识;当我们用不同类型的引用变量来指向对象时,这会帮助编译器判断对象是否可以回应特定的消息。让我们用下面例子来帮助理解这一点。Professor也是原创 2011-06-27 11:01:00 · 1652 阅读 · 0 评论 -
深入的了解继承
继承:1、在一个类被认为是一个类的特例时,继承用来从已存在的类中派生出新类型。2、派生类自动继承基类的数据结构和行为。3、C#中表示一个类从另一个派生的语法是,在类的声明后面放一个冒号和基类名称。public class Person{ string name; public string Name { get{return na原创 2011-10-31 22:13:29 · 765 阅读 · 0 评论 -
引用变量与对象
各种OO语言中采用不同方式实例化(创建)对象。在C#中,当声明一个用户自定义类型变量,如:Student y;的时候,并没有在内存中真的创建对象,而只是声明了Studnet类型的引用变量y。该引用变量可能会指向一个Student对象,但目前还没有;或者说,它的值为null,null是C#关键字,用来表示不存在的对象。必须通过特别的C#操作符——new ——来真正在内存中创造一个全新的S原创 2010-11-05 22:07:00 · 1368 阅读 · 0 评论 -
C# NameValueCollection集合
1.NameValueCollection类集合是基于 NameObjectCollectionBase 类。但与 NameObjectCollectionBase 不同,该类在一个键下存储多个字符串值(就是键相同,值就连接起来如下例子)。该类可用于标头、查询字符串和窗体数据。每个元素都是一个键/值对。NameValueCollection 的容量是 NameValueCollec转载 2010-08-07 20:32:00 · 13490 阅读 · 1 评论 -
ArrayList
创建一个ArrayList可以使用ArrayList类提供的三个构造器之一实例化一个ArrayList对象。1、最简单的形式是无参数构造器:ArrayList courseTaken= new ArrayList();该构造器创建一个内容的、缺省容量为16个元素的ArrayList。当元素数量到达当前上限时,ArrayList的容量自动翻倍。2、第二种形式是接受一个整数参数,原创 2010-08-08 22:31:00 · 1584 阅读 · 0 评论